我需要一些帮助来尝试找出导致我的一台服务器出现高负载峰值的原因(在 5-10 分钟内每小时至少一次上升到 120)。
问题是,这台服务器基本上是另一台服务器的镜像,它们都运行相同的应用程序,并且都连接到同一个 dbb 服务器(奇怪的是,用户最少的服务器却是产生高负载峰值的服务器)。
当我比较两个服务器进程时,我只是在其中一个峰值处进行调试ps ax
。我发现它们之间存在一些差异,主要是这些进程和它运行的时间:
576? S< 2:25 [ata/0]
577? S<0:12[ata/1]
578? S<4:39[ata/2]
579? S<1:04[ata/3]
580? S< 0:00 [ata_aux]
586? 8:41 [scsi_eh_3]
6502? 15:07 哈尔
这可能是问题的原因吗?任何帮助都将不胜感激。问候,西蒙。
答案1
您提到其中一个系统的流量比另一个大,差异有多大?如果出现问题的机器大部分时间处于闲置状态,则可能只是启动、缓存构建等成本。如果它不断看到流量,则您的硬件可能存在严重问题。
dmesg
和top
是vmstat
常见的安装。 iostat
不太常见,但通常以软件包形式提供。 有关它们的更多信息,请参阅手册页。
用于dmesg
查明内核是否遇到任何问题,例如 IO 或文件系统错误。
top
非常有用,它提供有关进程表、内存使用情况、平均负载和 CPU 利用率的持续数据。IO 或内存利用率是否有显著差异。
vmstat
用于提供虚拟内存、IO 和 CPU 活动的统计信息。第一行数据基于自启动以来的结果。后续行是自上一行以来发生的情况。如果调用如下,vmstat 3
它会每 3 秒更新一次信息。如果调用如下,vmstat 3 3
它会一直运行,直到提供 3 行数据。
另一个工具是 iostat。它提供了有关正在发生的事情的更详细信息。基本用法与 vmstat 类似。换句话说,末尾的单个裸数字表示收集间隔,2 个数字表示收集数据的频率和次数。对于 IO 问题,iostat -x 5
和/或iostat -p ALL 5
对于追踪瓶颈非常有用。
如果您使用的是 RAID5,阵列中的任何驱动器是否有问题? mdadm
如果您使用的是软件 RAID,则该工具是。硬件 RAID 适配器有自己的工具来告诉您发生了什么事情。
我遇到过这样的情况:一个供应商在一个阵列中提供了替换驱动器,但该驱动器的性能最高只达到原始驱动器的 35%,导致其所在阵列的性能受到严重影响。理论上,替换驱动器具有相同的基本规格,但无法像原始驱动器那样处理排队问题。