我正在使用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毫秒)。
那么从哪里开始呢?
答案 0 :(得分:1)
第一个请求是慢还是所有请求都缓慢?乘客在给定的时间间隔后关闭。因此,间歇性请求(中间有足够时间间隔的请求)将允许乘客关闭(仅在下次请求时重新启动。
乘客通过设计进行自动关机。这是因为在共享环境中,可能存在其他用户的应用程序。如果您的应用程序闲置一段时间,那么资源可以转移到其他人的应用程序。
如果预算紧张并且您在同一台服务器上托管了多个应用,那么乘客就是一个很好的解决方案。
如果您控制的服务器中只有一个应用程序,请重新配置乘客不要关机(如果这确实是您的问题)。
您可以执行“乘客状态”以查看当前有多少乘客正在运行并可以接听请求。
确保乘客熬夜的配置是PassengerMinInstances和PassengerPoolIdleTime。
答案 1 :(得分:0)
您是通过“假域名”(添加到/etc/hosts
文件中)访问它吗?
如果是,请执行
service avahi-daemon stop
至少那是在ubuntu 10.10上对我有用的东西:)
出于某种原因,对您对服务器执行的每个请求进行DNS查找,并且当域不存在时,它会超时......
答案 2 :(得分:0)
性能问题一直让我忙碌起来。我相信我已经把它钉到了Apache配置:KeepAliveTimeout,它被设置为一个非常高的值(90),想不到为什么它被设置得那么高,一定是一个错字。 我对KeepAliveTimeout的理解是Apache进程被锁定到客户端90秒,即使客户端没有发出任何进一步的请求,因此当流量恢复时(当天性能显着降低,页面访问时)所有Apache进程都忙于等待KeepAliveTimeout,同时阻止所有新请求进入。这也可以解释为什么系统根本没有显示多少负载,它只是坐在那里等待。我将值降低到10,如果流量增加,我可能会将其降至5。