我尝试配置 Apache 和 MySQL,但负载仍然非常高:http://d.pr/aD9L
我很确定这些峰值不是由流量增加引起的,因为在 Google Analytics 中找不到峰值。
我怎样才能找出导致这些峰值的原因?
答案1
您展示的图表并未显示哪些进程产生了负载。如果负载较低,我会询问是否存在:
- 此时运行的任何 cron 作业(例如备份等)都会影响负载
- 任何缓存清除条件 - 即清除缓存并且现在正在从应用程序提供服务。
我认为这些可能是最有可能发生的情况。
另外,如果您在虚拟机上运行,有时可能会发生类似这样的奇怪的事情!
答案2
如果您可以发布带有问题的配置文件,那就太好了 - 当然一定要清除您的 IP 地址和域名。
导致 httpd 负载过高的原因有很多,包括配置错误、拒绝服务等。
让我向你提出几个问题:::
- 在您的日志中您是否看到任何异常的情况?
- 您是否使用了 mod_security、mod_bandwidth、mod_deflate、mod_evasive 之类的东西?
- 您是否设置了防火墙?防火墙会报告任何异常情况吗?
当负载为
高 ps -aux|grep HTTP|wc -l
当负载上升时运行此命令
netstat -ntu | awk'{print $5}'| cut -d: -f1 | sort | uniq -c | sort -n
并运行此命令
netstat -lpn|grep :80 |awk '{打印 $5}'|排序
如果你在这些列表中看到大量未知的 IP - 请通过这样的命令行在 iptables 中阻止它们:
iptables -A 输入 -s -j DROP
答案3
补充一下 chrim2671 的回答,查看正在发生什么的最佳方法之一是使用“top” - 但(据我所知)它只能按 CPU 或内存使用情况对进程进行排序。而你说你的问题是负载。
对于 Web 服务器来说,您在 top(或 ps)中看到的只是正在运行的 httpd 进程 - 如果您想要了解更多详细信息,则需要查看日志或服务器状态。
您当然应该启用 mysql 慢速查询日志记录(如果尚未启用)并查看是否可以建立任何关联。
因为在 Google Analytics 中找不到峰值。
Google Analytics 是一款出色的使用情况分析工具 - 但它不是一款系统诊断工具。
您了解“负载”是什么吗?它是等待调度运行的平均进程数。它可能是由大量 I/O 以及 CPU/内存/网络瓶颈引起的。
您是否有任何理由相信该指标的增加会影响您向用户提供的服务?会让您花钱吗?如果它没有任何不利影响,是否值得担心?如果您不知道 - 那么您需要思考一下您正在监控什么以及为什么要监控。