2011-03-23 58 views
0

最近我们的rails应用程序升级到2.3.8。我们还在升级期间用Phusion Passenger替换了Mongrel/Mongrel群集。乘客问题

无论何时我们尝试部署我们的应用程序,它似乎都会在最初响应得更快,但响应时间逐渐增加。我们还注意到,数据库框中的cpu使用率达到400%,并且全局队列中的许多请求正在等待。这似乎只发生在我们的生产环境中。

任何人都可以让我知道我应该怎么去调试这个问题?

无论如何,我们可以限制乘客和数据库之间的连接数量吗?

也有我们可以在乘客中设置连接池的方法吗?

谢谢,
Sivakumar。

回答

1

我不认为这个问题是乘客。如果你的数据库盒子的CPU数量很大,那么你的问题可能就在那里。没有有关数据库的更多信息,很难给你细节,但这里有一些事情你可以尝试:

  1. 运行top,并检查您在所有内存的多启动mysqld或其它数据库进程占用。如果这个数量不高,那么您可能需要调整MySQL设置以利用数据库框中的RAM。
  2. 使用mytop命令分析您正在运行的数据库查询。您可能有一些查询会占用您的所有系统资源或导致大量交换。
  3. 查看你的MySQL慢日志,看看你是否有超过1秒的查询运行。
  4. 检查您的数据库引擎。你在使用MYISAM和/或InnoDB吗?您可能需要对数据库进行不同的调整,以便为每个引擎分配适量的内存和资源。
  5. 咨询DBA。他们将能够查看您的使用情况和应用程序,并且如果问题出在您的数据库或应用程序上,可以更明确地告诉您。

P.S:我会建议升级到乘客3,它的性能比Passenter 2.更好

+0

我第二次升级到乘客3.0.x的 – 2011-03-23 17:29:01

+0

我们已经在使用乘客3.我们正在六台机器上运行应用程序,每台机器有45个乘客实例。所以我想总共有270个连接会被MySQL打开。这可能是为什么mysql占用CPU的原因吗?无论如何将限制与MySQL帮助的连接数量? – Sivakumar 2011-03-24 02:55:37

+0

我不能肯定地说,但我会建议先检查我在回答中列出的步骤。对于一台机器来说,45个乘客似乎很多,但是如果他们能够处理它,那么你的能力就越强。您可以尝试限制您打开的乘客密码。 – 2011-03-24 04:53:31