我们在CentOS 7上运行LAMP堆栈。大概一年没事了。
但是今天我们只看到了loading averages 。 我们检查top没有看到任何高负载的特定进程,但有一个非常多的Apache进程stream运行。
试图重新启动Apache几次,但没有帮助。
最后决定重新启动MySQL 。 这短暂地减less了负载,但不是很长。
然后决定重新启动服务器。 这也只是简单地减less了负载。
日志不显示太多的外部连接:
$ sudo tail -n 500 /var/log/httpd/access_log | cut -d' ' -f1 | sort | uniq -c | sort -gr 395 ::1 101 127.0.0.1 3 66.102.6.91 1 66.102.6.89
会发生什么事? 我们如何解决这个问题?
编辑1:更多细节
负荷平均值介于50和300之间。在某一点上,我们有这样的:
$ uptime 10:33:28 up 317 days, 22:36, 2 users, load average: 81.21, 75.67, 75.62
稍后检查:
$ uptime 12:41:50 up 50 min, 2 users, load average: 227.67, 147.99, 75.37
在Apache产生数百个进程并推出加载平均值之后,我们检查了configuration,但没有看到ServerLimit或任何其他参数:
$ less /etc/httpd/conf/httpd.conf | grep ServerLimit $
你的系统明显过载了。 您应该安装监控,使用它来收集数据,然后应用科学方法 – 这是确保唯一的方法。
进一步阅读:
CentOS中睡眠过程的数量过多 – 如何诊断?