今天看来我管理的网站一整天都在线上线下。我不知道是什么导致了这个问题所以我正在寻找从何处着手的指导。这是一个基于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包。
所以在这一点上,我会请求一些帮助,试图弄清楚这是什么原因,以及如何解决这个问题。非常感谢任何帮助。
答案 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。大多数情况下,这将通过显着减少发生的数据库调用次数来解决任何数据库问题。