0

我正在使用 Apache 2.2.17、Passenger 3.0.11、Ruby 1.9.3 和 Rails 3.2.6 运行 Ubuntu(64 位)

在我的网页上访问网页(index.html)时,请求需要很长时间才能完成,在极端情况下大约需要 30 秒。

服务器有足够的可用内存(顶部显示超过 4GB 可用),Apache 进程(其中有 10 个)在顶部显示 0% CPU,负载也几乎为 0,几乎没有任何数据库访问,因为我缓存memcached 的大部分内容。

Apache 和 Rails 的日志文件没有显示任何错误,相反,RubyOnRails 日志文件中显示的渲染时间显示了极好的值(<100 ms)。

那么从这里去哪里呢?

4

3 回答 3

1

第一个请求慢还是所有请求都慢?乘客在给定的时间间隔后关闭。因此,间歇性请求(中间有足够时间跨度的请求)将允许乘客关闭(仅在下一次请求时重新启动。

乘客按设计自动关闭。之所以如此,是因为在共享环境中,可能存在其他用户的应用程序。如果您的应用闲置一段时间,则可以将资源转移到其他人的应用中。

如果您的预算紧张,并且在同一台服务器上托管了多个应用程序,那么乘客是一个很好的解决方案。

如果您的服务器中只有一个您控制的应用程序,请重新配置Passengers 以不关闭(如果这确实是您的问题)。

您可以执行“passenger-status”来查看当前有多少乘客正在运行并且可以接受请求。

保证Passengers熬夜的配置是PassengerMinInstances和PassengerPoolIdleTime。

于 2012-07-31T12:37:36.817 回答
0

您是否通过“假域名”(添加到您的/etc/hosts文件中)访问它?

如果是这样,做

service avahi-daemon stop

至少在 ubuntu 10.10 上这对我有用 :)

由于某种原因,您对服务器所做的每个请求都会进行 DNS 查找,并且当域不存在时,它会超时......

于 2012-07-31T12:35:00.690 回答
0

这些天来,性能问题一直让我很忙。我相信我已经将它归结为 Apache 配置:KeepAliveTimeout,它被设置为一个非常高的值(90),想不出它为什么设置那么高,一定是一个错字。我对 KeepAliveTimeout 的理解是 Apache 进程被锁定到客户端 90 秒,即使客户端没有发出任何进一步的请求,因此当流量增加时(它在性能显着降低的那一天,页面访问超过三倍)所有 Apache 进程都忙于等待 KeepAliveTimeout,同时阻止所有新请求进入。这也可以解释为什么系统根本没有显示太多负载,它只是坐在那里等待。我将值降低到 10,如果流量增加,我可能会将其降低到 5。

于 2012-08-04T10:39:47.503 回答