我们正在运行一个大型服务器(12个线程,6个内核,64GB内存,2个SDSDSRaid-0),用于部署nginx/passenger的Rails应用程序。
不幸的是,页面总是在10到40秒之间加载。但是,服务器的负载非常轻,平均负载0.61 0.56 0.53。我们使用了奇怪的ram,free -ml报告了57gb(64gb)的使用量,而htop只报告了4gb(64gb)。
我们已经检查了生产日志,rails请求需要大约100/200ms才能完成,所以几乎什么都没有。
如何识别瓶颈?

最佳答案

这个问题相当含糊,但我看看能不能给你点建议。
我的第一个猜测是你的应用程序花了很多时间做与数据库相关的事情,请看下面的我的建议。
至于奇怪的内存使用情况,您是否正在查看free -ml输出的正确部分?为了澄清,您需要查看-/+ buffers/cache:行以获得准确的输出。
你也可以检查一下你的乘客是否被吊死,因为这是乘客的一个常见问题。您可以通过对乘客运行strace -p $pid来完成此操作。如果它被挂起来,它将明显缺乏“做任何事”
至于rails内部的故障排除响应时间,我强烈建议使用newrelichttp://newrelic.com/)。你经常可以通过分解应用程序的每个部分所花费的时间,准确地看到应用程序的哪个部分导致了错误的响应时间。这是一个简单的gem安装,一旦你得到报告工作,它非常宝贵的问题,像这样。

10-08 04:51