3

我正在运行一个 Rails 3.1.0 应用程序,但我遇到了一个奇怪的问题。在我们的登台服务器上,活动非常少,我们有 5 个 ruby​​ 进程不断地使用以下命令 ping mySQL:

poll([{fd=12, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(12, "\f\0\0\0\3SHOW TABLES", 16)  = 16
select(13, [12], NULL, NULL, NULL)      = 1 (in [12])
read(12, "\1\0\0\1\1D\0\0\2\3def\0\vTABLE_NAMES\0\31Tabl"..., 16384) = 637
poll([{fd=12, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(12, "\f\0\0\0\3SHOW TABLES", 16)  = 16
select(13, [12], NULL, NULL, NULL)  

最后一行是不完整的,但我们每秒钟都在谈论几次(x5/6 进程)。该服务器是一个野兽,它有 32GB 的 RAM 并且已经进行了一些优化(即 mySQL 设置),但它杀死了服务器。

就像我说的,服务器的活动很少,所以它不是用户,也不是任务。

(对于考虑将其从该论坛移开的管理员,我相信这是一个 ruby​​/rails 问题,我不确定它是否在服务器论坛中,它与回答者有很好的兼容性)

我会非常感谢任何建议,我担心这可能会让我有点不知所措。我不是这样的 Linux/mySQL 专业人士。

谢谢

4

1 回答 1

0

我会查看您的数据库的连接池。运行这个有帮助吗?

ActiveRecord::Base.clear_active_connections!

具体来说,在此环境的 config/database.yml 中,尝试设置 pool:50 并重新启动 rails,然后查看这是否会影响结果。如果您的池已用尽,下一个问题是了解数据库连接池被用完的具体原因(此命令或在 resque 中运行的某些内容)。我认为池默认大小是 4 或 5

于 2012-07-03T22:52:06.170 回答