在过去的半年里,我们的生产网络服务器宕机了几次。最后,我们不得不联系网络托管商并让他们重启,因为我甚至无法通过 SSH 登录。这似乎只影响网络服务器,而不影响独立的 MySQL 数据库服务器。当它影响网络服务器时,所有托管网站都会超时。
我想检查 Web 服务器优化/更正以找到此问题的根源。关于如何进行此操作,您有什么建议吗?我相信日志文件会发挥作用。我能够找到基于 Linux 的服务器并进行必要的更改,但我可能还没有想到任何技巧,对此我也很感兴趣。我们最好与外部顾问交谈,这也是另一种选择。
谢谢。
答案1
这听起来像是交换的典型案例。如果您有任何可用的指标/监控系统,请检查内存报告(sar、cacti、munin 等)。如果没有,是时候选择一个并进行设置了。
可能性是 (apache 子进程数) x (apache 子进程的平均内存大小) > 可用内存的简单情况。您可以通过多种方式解决这个问题,首先看看您是否可以精简您的 php 脚本。不要太过分,但如果您可以进行一些简单的 include/require/classloader 修复,那么您可能能够通过一个下午的快速分析工作将它们的占用空间减少一半。之后,无论您的平均 apache 子进程大小是多少,都要进行计算以确定有多少会填满所有可用内存,然后减少约 20% 并将其设为您的 MaxClients 设置。
答案2
如果有多个网络服务器并在它们之间平衡负载,那么如果一个服务器出现故障,那么您可以指定备份服务器来接管。我想说,如此大的单点故障应该是首先要开始寻找的地方之一。
答案3
RFX 的 RPM(资源保护监视器)会为您创造奇迹。
简而言之 - (它是免费的)它的作用是 - 它会查看,当它看到系统进程正在使用太多进程时,它将重新启动或关闭该进程,然后重新启动。
非常好 :-)
节省了大部分网站托管商的大部分时间