我时不时会遇到奇怪的问题。我的 VPS 超载并且无法请求。我必须手动重启服务器,并且只有在服务器恢复正常后才能重启。但有时要过几个小时我才会发现它超载了,而这段时间我的网站一直处于宕机状态。如果 CPU 使用率超过 50%,有没有办法让 Linux 重新加载?这对我很有帮助。
答案1
像您所追求的这种保姆脚本非常危险,它所导致的问题比它解决的问题还多,我同意 kaerast 的观点,需要追查问题的根本原因,看您制作的屏幕截图,问题可能更多地出在内存上,而不是 CPU 上。
您的 apache 错误日志或 /var/log/messages 或 /var/log/syslog 中是否有任何明显错误
答案2
您的控制台清楚地显示 apache2 OOM'ing。
在您的 Apache 配置中,尝试调整 MaxRequests(它将在一定数量的请求后循环一个 httpd 进程,如果您的 Web 应用程序正在泄漏内存,这将很有帮助)和/或 MaxClients(它将限制您的服务器可以处理的最大同时连接数)
计算 MaxClients 的一个“有点”合理的方法是应用这个等式:
(Physical RAM present) / (Average Size of Process) * 1.25 (to account for memory-sharing effects)
1.25 是一个可调节的“模糊因子”,您可以上下调整。该值越高,服务器出现 OOM 的风险就越大。
答案3
Monit 是一个很好的简单解决方案。但您可能需要查看根本原因并找出导致 CPU 使用率过高的原因,然后优化代码或获取更快的服务器。
答案4
那么你的 Apache 配置是什么样的?你当前对这些参数的设置是什么:
- 最小备用服务器
- 最大备用服务器数
- 服务器限制
- 最大客户数
您的默认 Apache 配置很有可能将这些参数设置得太高,超出了 VPS 上的可用内存。生成过多的 Apache 进程(这些进程一开始就占用大量内存)很容易让您陷入日志中看到的相同 OOM 内存情况。