Apache + MySQL 加载问题

Apache + MySQL 加载问题

我尝试配置 Apache 和 MySQL,但负载仍然非常高:http://d.pr/aD9L

我很确定这些峰值不是由流量增加引起的,因为在 Google Analytics 中找不到峰值。

我怎样才能找出导致这些峰值的原因?

答案1

您展示的图表并未显示哪些进程产生了负载。如果负载较低,我会询问是否存在:

  • 此时运行的任何 cron 作业(例如备份等)都会影响负载
  • 任何缓存清除条件 - 即清除缓存并且现在正在从应用程序提供服务。

我认为这些可能是最有可能发生的情况。

另外,如果您在虚拟机上运行,​​有时可能会发生类似这样的奇怪的事情!

答案2

如果您可以发布带有问题的配置文件,那就太好了 - 当然一定要清除您的 IP 地址和域名。

导致 httpd 负载过高的原因有很多,包括配置错误、拒绝服务等。

让我向你提出几个问题:::

  1. 在您的日志中您是否看到任何异常的情况?
  2. 您是否使用了 mod_security、mod_bandwidth、mod_deflate、mod_evasive 之类的东西?
  3. 您是否设置了防火墙?防火墙会报告任何异常情况吗?
  4. 当负载为

    高 ps -aux|grep HTTP|wc -l

  5. 当负载上升时运行此命令

    netstat -ntu | awk'{print $5}'| cut -d: -f1 | sort | uniq -c | sort -n

  6. 并运行此命令

    netstat -lpn|grep :80 |awk '{打印 $5}'|排序

  7. 如果你在这些列表中看到大量未知的 IP - 请通过这样的命令行在 iptables 中阻止它们:

    iptables -A 输入 -s -j DROP

答案3

补充一下 chrim2671 的回答,查看正在发生什么的最佳方法之一是使用“top” - 但(据我所知)它只能按 CPU 或内存使用情况对进程进行排序。而你说你的问题是负载。

对于 Web 服务器来说,您在 top(或 ps)中看到的只是正在运行的 httpd 进程 - 如果您想要了解更多详细信息,则需要查看日志或服务器状态。

您当然应该启用 mysql 慢速查询日志记录(如果尚未启用)并查看是否可以建立任何关联。

因为在 Google Analytics 中找不到峰值。

Google Analytics 是一款出色的使用情况分析工具 - 但它不是一款系统诊断工具。

您了解“负载”是什么吗?它是等待调度运行的平均进程数。它可能是由大量 I/O 以及 CPU/内存/网络瓶颈引起的。

您是否有任何理由相信该指标的增加会影响您向用户提供的服务?会让您花钱吗?如果它没有任何不利影响,是否值得担心?如果您不知道 - 那么您需要思考一下您正在监控什么以及为什么要监控。

相关内容