Linux服务器性能分析 – 如何查看造成高负载的原因

如果服务器遇到高负载,我使用顶级和类似的工具来解决问题的原因。 但是,这只有在服务器遇到问题时才能分析才有效。

以前有什么好的工具可以find高服务器负载的根本原因? 例如,我正计划投入一个cron作业,每5分钟保存一个“顶级”输出,apache服务器状态,mysql进程列表等。 但这似乎不是很优雅,想知道是否有人已经拿出一些公用事业来实现这一点。

对于持续的监测,你可以考虑安装munin 。 它将每隔5分钟收集一次信息,并生成图表,以便您查看瓶颈的位置。 我也使用sar ,可以在后台模式下将数据收集到磁盘。 这给出了相当详细的信息是什么瓶颈。 在过去的哪些stream程中,您将需要进程记帐软件包。

您的非优雅的解决scheme实际上是一个很好的解决scheme,而不需要设置单独的监视控制台(想想SNMP陷阱)。 如果您运行的是RHEL / CentOS风格的系统,请确保已经安装了“sysstat”(并打开它)来收集有关CPU,内存,磁盘I / O等的持续统计信息。 (请参阅/etc/sysconfig/sysstat.*configuration文件来调整)。

一旦你为你收集了潜在的统计数据,就可以用它来确定何时出现负载趋势(除了看到高CPU,你的proc队列是否备份?你是否看到重大的分页错误?你的交换使用情况如何?)然后你可以关联到你的“mysqladmin proc stat”types列表等等。 如果是LAMP堆栈,请抓取总的httpd进程,然后快速总结/除以找出要logging的平均进程大小。 在MySQL中启用缓慢的查询日志,然后捕获那些坏男孩,并寻找一些需要索引的表。

有时候高科技不是坏的技术。 :)为什么使用电锯时,刀会做。

我喜欢collectd,但我最近开始玩pcp(性能副驾驶)。 它有一些很好的历史诊断function。 [1]: http : //oss.sgi.com/projects/pcp/

可能还想看看collectd,作为一个munin的select。

顶上 。

它补充了top / htop,因为它可以随着时间的推移收集统计数据。