我在 Redhat 7.9 上没有 iotop、atop 或任何非 Redhat 工具。
有没有办法调查哪个进程正在消耗所有硬盘访问权限?
我没有安装 gnome,因此无法使用 gnome 提供的监视工具。我只使用 ssh 和命令行工具。
使用 SAR 我检测到硬盘 SDA 99% 繁忙,但我不知道原因。
我在 Redhat 7.9 上没有 iotop、atop 或任何非 Redhat 工具。
有没有办法调查哪个进程正在消耗所有硬盘访问权限?
我没有安装 gnome,因此无法使用 gnome 提供的监视工具。我只使用 ssh 和命令行工具。
使用 SAR 我检测到硬盘 SDA 99% 繁忙,但我不知道原因。
我有一台 7.9 Redhat 服务器,大约有 30 个用户、64 个内核和 512 Go RAM。我有几个僵尸进程,我不知道用户到底是什么创建了这些进程,但我在阅读互联网上的内容后有一种感觉,当他们的会话被终止时,它将杀死所有僵尸进程,因为“父”进程将被终止。
所以让我们想象一下,如果一个用户在其会话期间创建大约 30 个僵尸进程,那么最多可以有 900 个僵尸进程,这只是一个近似值,因为一个用户的会话持续时间越长,僵尸进程数就越高。我是否需要监控这个数字以避免服务器崩溃或类似的情况?
我知道僵尸进程不占用任何资源(RAM、CPU 等),但这也是该值不能高于限制的证据......
我还知道有时用户会断开连接,然后清理僵尸进程,因此僵尸进程的数量可能会减少......
具有 512 GB RAM 的 Red Hat 7.9 服务器。
我们经常收到有关交换空间已满的警报。99% 经常使用 Swap。我们的服务器管理员告诉我们,Linux 的交换空间使用率达到 100% 是正常的。无法检查实际 RAM 消耗情况。
我们的服务器上始终使用 SAR 的 99% 左右:
Memory & Swap
=============
kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
01/11/2024 9869583 517833049 98.13 977 285023790 319073740 58.60 340613912 162678784 614843
01/12/2024 4181004 523521628 99.21 1349 287757937 323767076 59.46 346046454 162168337 1115633
01/13/2024 2567787 525134845 99.51 844 285755715 327744180 60.19 352144911 157031086 654493
01/14/2024 2827695 524874937 99.46 844 285135562 328070493 60.25 352003644 156742082 742178
01/15/2024 3482087 524220545 99.34 1838 280133083 332837943 61.13 353676271 153986907 998373
01/16/2024 2152990 525549642 99.59 839 273578756 342252974 62.86 362157756 147013751 1136099
01/17/2024 4575639 523126993 99.13 2418 271393967 340334778 62.51 355987093 150884756 1033531
01/18/2024 2205445 525497187 99.58 2413 282078831 328216144 60.28 353148916 156770066 625021
01/19/2024 9451354 518251278 98.21 1542 293648210 305176716 56.05 352495156 150264497 680464
在网上我可以看到交换使用率高是不正常的。我还注意到,重新启动后,几天内交换量非常低。当一个进程消耗了所有 RAM(我们这边的错误)时,交换使用率会增加到 100%,然后永远不会减少,即使相应的进程被终止也是如此。这就是为什么运行数周的服务器 100% 交换已使用。
我被告知使用 sar (pswpin/s pswpout/s) 监视交换使用情况。
当交换使用率为 100% 时,我可能没有问题,但当进程由于 RAM 问题而开始被终止时,我可以看到 pswpin/s pswpout/s (sar -W) 的值较高。
在一周内,我可以监控此活动以检查我是否有 RAM 问题。
我的问题如下: 如何防止 RAM 问题发生?我可以使用什么来检查 RAM 的使用百分比(而 SAR 中始终为 99%...)?如何像Windows操作系统那样获得真正的价值?确保杀死开始占用所有 RAM 的进程。
我想在 RAM 使用率达到 80% 时生成警告。
我知道可以使用 free -h 但我不知道如何解释它。“顶部”也一样。
例如,我将 sar 输出与 free -h 和 top 输出进行比较,但没有看到匹配的值...:-(
[XXXXX@YYYYYY ~]$ sar -r
Linux 3.10.0-1062.4.1.el7.x86_64 (XXXXXX) 02/02/2024 _x86_64_ (64 CPU)
10:30:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
11:55:01 AM 7916396 519786232 98.50 4688 436720908 164442944 30.20 256757744 249531760 1548
12:00:01 PM 1106680 526595948 99.79 4688 436883120 173459020 31.86 263356476 249699552 4184
12:05:01 PM 742056 526960572 99.86 4688 436447380 173668428 31.90 264216776 249402376 5380
12:10:01 PM 11076780 516625848 97.90 4688 434763392 162944064 29.93 255501116 247835888 3732
12:15:01 PM 7891084 519811544 98.50 4688 434921220 165981024 30.48 258656448 247885164 600
Average: 2201518 525501110 99.58 5447 448667788 154099963 28.30 257069976 255388912 3431
[XXXXX@YYYYYY ~]$ free -h
total used free shared buff/cache available
Mem: 503G 81G 4.3G 1.3G 417G 419G
Swap: 15G 11G 4.4G
[XXXXX@YYYYYY ~]$ top
top - 12:22:09 up 9 days, 18:55, 48 users, load average: 4.21, 4.69, 5.06
Tasks: 2645 total, 5 running, 2488 sleeping, 0 stopped, 152 zombie
%Cpu(s): 6.8 us, 3.4 sy, 0.0 ni, 89.8 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 52770262+total, 6888876 free, 83310656 used, 43750310+buff/cache
KiB Swap: 16777212 total, 4582892 free, 12194320 used. 44195168+avail Mem
我不知道要检查 top 或 free -h 的哪些值来了解 RAM 消耗使用的实际百分比。
非常感谢您的帮助