压力

压力

我目前正在尝试对数据中心中的新服务器进行健康检查,作为在任何应用程序端使用之前的第一次 QA。

“有什么实用的方法和工具可以检查服务器是否可以正常使用?”

关于工具,我正在研究 memtest86 来测试内存和 IOzone 文件系统基准。但我希望有更多其他测试可以做,并且有比这两个更好的工具。

答案1

我曾经在大型数据中心做过大量的硬件故障排除,我建议找一个可启动的 Linux 发行版,任何发行版都可以。如果你有 64 位 CPU,一定要找到一个带有 64 位映像的发行版。 压力Linux包含一整套工具来对您的服务器施加压力,并强制公开任何硬件故障。

我个人很喜欢“压力”工具 - 它可以打击硬盘、内存和处理器。

压力

关于 memtest86+ 的简要说明

这不是压力套件的一部分,但显然您知道它存在。一定要确保您使用的是 memtest86+(强调 +) - 它处理 64 位系统和大量内存分配的能力远优于原始的 memtest86。

记忆测试

这将产生n每个进程在 malloc() 上以 256MB 的速度旋转。

stress -m n &

因此,您需要将内存量除以 256MB(大致),以达到全部内存量。这将清除任何明显的错误,您可能会看到 EDAC 或 MCE(取决于您的处理器/主板),或内核崩溃/硬崩溃。理想情况下,您可以让它运行几个小时,让其在负载下升温。您可以检查系统日志以查找这些错误。

CPU测试

这将产生n在 sqrt() 上旋转的过程。

stress -c n &

你会想要n是系统中的核心数。只要让它运行一段时间,同样的概念也适用。

磁盘子系统测试

这需要以某种方式对硬盘进行格式化,如果您使用 RAID,并且已经在安装驱动器和对其施加压力之前进行了设置,那么您将获得更好的结果。

将目录更改为您要强调的磁盘分区/区域。可用空间越多越好。

cd /hard/disk/partition

这将产生n每个进程以 1GB 的速度在 write() 上旋转

stress -d 32 n &

使用以下方式监控磁盘 IO:

iostat -x 5

消除压力

为了终止所有压力进程,您可以同时运行内存、CPU 和硬盘检查,但这会使隔离组件变得更加困难:

pkill -9 -f stress

验证你的测试

显然,您运行了所有这些程序,并且需要看到某种结果或确认。

内存/CPU

您只需要检查系统日志中是否存在机器检查异常(MCE)、错误检测和纠正(EDAC)、内存不足(OOM)等。

zgrep -i -P ".*(error|warn|fail|panic|edac|mce|exception|oom-killer|oops).*" /var/log/kern.log* /var/log/dmesg /var/log/daemon.log* 

磁盘子系统

这可能是比其他任何组件都更容易检测的,智能控制通常安装在大多数 *NIX 操作系统上,它是智能工具包。以下命令需要 root 访问权限:

/dev/sda如果您有多个磁盘或 RAID 控制器,则可能需要更改此方面。

sudo smartctl -a /dev/sda

下面是完整命令的一些示例输出,我将在页面下方指定您真正应该寻找的内容。

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate     0x000b   099   099   016    Pre-fail  Always       -       65537
2 Throughput_Performance  0x0005   136   136   054    Pre-fail  Offline      -       95
3 Spin_Up_Time            0x0007   121   121   024    Pre-fail  Always       -       320 (Average 304)
4 Start_Stop_Count        0x0012   100   100   000    Old_age   Always       -       18
5 Reallocated_Sector_Ct   0x0033   100   100   005    Pre-fail  Always       -       0
7 Seek_Error_Rate         0x000b   100   100   067    Pre-fail  Always       -       0
8 Seek_Time_Performance   0x0005   144   144   020    Pre-fail  Offline      -       28
9 Power_On_Hours          0x0012   098   098   000    Old_age   Always       -       15407
10 Spin_Retry_Count        0x0013   100   100   060    Pre-fail  Always       -       0
12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       18
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       37
193 Load_Cycle_Count        0x0012   100   100   000    Old_age   Always       -       37
194 Temperature_Celsius     0x0002   253   253   000    Old_age   Always       -       22 (Min/Max 15/31)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0022   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0008   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x000a   200   200   000    Old_age   Always       -       0

您需要了解的主要属性如下:

重新分配的扇区

一般来说,这个应该小于1000。

由于前一个扇区不健康,这些扇区必须重新分配到硬盘的另一部分。

温度_摄氏度

这个应该小于 55,在某些情况下命令本身会有最小值/最大值 - 但在 55 以下时我们看到了健康的磁盘操作。

当前待处理部门

必须为 0。

脱机_无法纠正

必须为 0。

UDMA_CRC_错误计数

应该是0,几个也可以(少于100)。

另请注意,这些可能表示 SATA/SAS 电缆有问题。

有很多方法可以对您的服务器进行压力测试和基准测试,这只是我所熟悉的并且取得了很好的效果的方法。

我希望这有帮助!

相关内容