尝试连接 Postgresql DB 时,Rails 应用程序不断超时

尝试连接 Postgresql DB 时,Rails 应用程序不断超时

我在小型 Windows Azure Ubuntu 13.04 VM使用默认的 postgresql.conf。我有一个 Rails 应用程序在中型 Windows Azure Ubuntu 13.04 VM 上运行。访问 postgresql 数据库时,rails 应用程序不断超时。在其 database.yml 中,我将连接池大小设置为 120,将超时设置为 15 秒。尽管如此,我的 rails 日志中还是充满了以下错误消息:

ActiveRecord::ConnectionTimeoutError: could not obtain a database connection within 5 seconds (waited 5.0023203 seconds). The max pool size is currently 120; consider increasing it.

我的 postgresql.conf 的最大连接数限制为 120,如果超过该值,服务器将无法成功重启。我还确保 postgresql.conf 中的 ssl 已关闭。本文但除此之外,我不知道发生了什么。我的 postgresql 日志不包含任何表明出现问题的信息。我的网站每天的点击量约为 1000 次,所以也许小型 VM 实例不够强大?我非常感谢任何帮助!

[编辑1] postgresql 数据库位于同一关联组内的单独云服务中。例如:

db 小型 VM:mydatabase.cloudapp.net(Affinity Group 美国东部)
论坛中型 VM:myforums.cloudapp.net(Affinity Group 美国东部)

在数据库服务器上,我打开了端口 5432。论坛服务器到数据库服务器的连接使用的是其主机名。DNS 解析耗时这么长,可能是原因吗?

答案1

使用 Windows Azure 内部 IP 地址代替主机名解决了问题。显然 DNS 解析的成本相当高。

相关内容