如何找到网站上线/离线的原因

时间:2010-12-29 06:48:38

标签: sql-server apache webserver

今天看来我管理的网站一整天都在线上线下。我不知道是什么导致了这个问题所以我正在寻找从何处着手的指导。这是一个基于WordPress的网站。

所以这就是我所知道的:

我使用的程序每分钟都会对服务器进行ping操作,当服务器没有回复我时,它会通过电子邮件发送给我,这样我就能确切知道该网站何时在线和离线。该网站在12.28之间的晚上8点到12点之间,以及12月29日凌晨1点半左右(纽约市时区,以及所有时间都在同一时区)。

在上升/下降时,我看到内存使用上的压力很大。查看网站上线/离线时的平均负载(http://screencast.com/t/BRlfXkqrbJII)。然后我运行此命令重新启动http(http://screencast.com/t/usVtYWZ2Qi),然后内存使用量下降到此(http://screencast.com/t/VdTIy3bgZiQB)。在我重新启动http一小时后,该网站随后离线/在线,因此重新启动http并没有提供太多帮助。

当网站离线/在线时,我运行了top命令并得到了这个(http://screencast.com/t/zEwr7YQj3)。当网站处于最低位置(http://screencast.com/t/eaMfha9lbT时 - 这是一个top命令 - 所以这将被称为“正常”)。

以下是带宽报告(http://screencast.com/t/AS0h2CH1Gypq)。

流量似乎不是那么多(http://screencast.com/t/s7hrWNNic1K),但是看着我的时间网站上升/下降这可能是其中一个原因?

我在Media Temple(http://mediatemple.net/webhosting/nitro/)有dvp Nitro包。

所以在这一点上,我会请求一些帮助,试图弄清楚这是什么原因,以及如何解决这个问题。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

您正在使用更难调试的虚拟服务器 - 更有可能出现瓶颈。它也在很大程度上取决于主机配置。

但是,你应该做的第一件事是:

将apache中的KeepAlive方向设置为Off

在几乎每一个版本中,这都会显着减少由apache引起的服务器负载,但它会减少客户端请求的延迟。 (因为他们必须为每个要获取的资源打开一个新连接。)

但是你的mysql服务器似乎消耗了最多的资源。看看慢速查询日志,maby你可以发现一些东西。

您的应用程序很可能出现问题(它挂起并保持mysql连接打开,执行奇怪的查询等。)

但它不需要。它也可能是某种资源僵局。

请运行此命令并发布输出:

cat /proc/user_beancounters

这是一个准确显示虚拟机限制以及是否已被命中的文件。

这将让更多的光线照亮这个问题,以便我们可以进一步分析它。

还请发布“df -h”以及“df -i”。

答案 1 :(得分:0)

非常标准的东西 - 你有很多'慢'客户。客户端越多 - apache运行速度越慢。死循环。

你需要:

1)将apache切换到prefork模式,最大进程数= 10-20

2)设置前端 - 就像nginx一样。另一种选择 - 用lighthttpd替换apache。它们每个连接都使用非常少的内存。

答案 2 :(得分:0)

我已经看到同样的事情发生了类似的设置。在我们的案例中,事实证明,有几个客户端速度很慢并且捆绑了数据库连接,这会减慢其他人的速度。如果我重新启动MySQL,问题就会消失。

您可以通过调整MySQL设置来改进。但是,使用Wordpress改进功能的最快方法之一是安装WP Super Cache。大多数情况下,这将通过显着减少发生的数据库调用次数来解决任何数据库问题。

http://wordpress.org/extend/plugins/wp-super-cache/