ご注意下さい
この記事は3年以上前に書かれた記事ですので、内容が古い可能性があります。
ClamAVがメモリを大量消費しており、OOM(Out of Memory)で落ちていました。実は私の勘違いで、clamd@scanサービスとclamd@amavisdサービスの2つを起動してしまっていたので発生していたのですが…。
… Feb 8 03:21:44 kamatans kernel: Out of memory: Killed process 13651 (clamd) total-vm:1213536kB, anon-rss:764028kB, file-rss:332kB, shmem-rss:0kB, UID:985 Feb 8 03:21:50 kamatans kernel: Out of memory: Killed process 13654 (clamd) total-vm:1226848kB, anon-rss:752248kB, file-rss:424kB, shmem-rss:0kB, UID:983 Feb 8 03:21:56 kamatans kernel: Out of memory: Killed process 13650 (clamd) total-vm:1234768kB, anon-rss:811444kB, file-rss:180kB, shmem-rss:0kB, UID:985 Feb 8 03:22:03 kamatans kernel: Out of memory: Killed process 13660 (clamd) total-vm:1230936kB, anon-rss:784388kB, file-rss:0kB, shmem-rss:0kB, UID:983 Feb 8 03:25:04 kamatans kernel: Out of memory: Killed process 13709 (clamd) total-vm:1288308kB, anon-rss:826084kB, file-rss:0kB, shmem-rss:0kB, UID:985 Feb 8 03:25:15 kamatans kernel: Out of memory: Killed process 13719 (clamd) total-vm:1235556kB, anon-rss:795912kB, file-rss:0kB, shmem-rss:0kB, UID:983 Feb 8 03:25:22 kamatans kernel: Out of memory: Killed process 13725 (clamd) total-vm:1200988kB, anon-rss:722460kB, file-rss:4kB, shmem-rss:0kB, UID:985 Feb 8 03:25:28 kamatans kernel: Out of memory: Killed process 13731 (clamd) total-vm:1282956kB, anon-rss:846612kB, file-rss:0kB, shmem-rss:0kB, UID:983 Feb 8 03:25:35 kamatans kernel: Out of memory: Killed process 13724 (clamd) total-vm:1232200kB, anon-rss:757008kB, file-rss:0kB, shmem-rss:0kB, UID:985 Feb 8 03:25:41 kamatans kernel: Out of memory: Killed process 13736 (clamd) total-vm:1275276kB, anon-rss:797432kB, file-rss:0kB, shmem-rss:0kB, UID:983 Feb 8 03:25:51 kamatans kernel: Out of memory: Killed process 13739 (clamd) total-vm:1266056kB, anon-rss:783968kB, file-rss:0kB, shmem-rss:0kB, UID:985 Feb 8 03:26:18 kamatans kernel: Out of memory: Killed process 13742 (clamd) total-vm:1232216kB, anon-rss:801528kB, file-rss:0kB, shmem-rss:0kB, UID:983 Feb 8 03:26:37 kamatans kernel: Out of memory: Killed process 13738 (clamd) total-vm:1162832kB, anon-rss:675960kB, file-rss:0kB, shmem-rss:0kB, UID:985 Feb 8 03:26:45 kamatans kernel: Out of memory: Killed process 13747 (clamd) total-vm:1290888kB, anon-rss:877156kB, file-rss:0kB, shmem-rss:0kB, UID:983 Feb 8 03:26:52 kamatans kernel: Out of memory: Killed process 13750 (clamd) total-vm:1181284kB, anon-rss:720740kB, file-rss:0kB, shmem-rss:0kB, UID:985 Feb 8 03:26:58 kamatans kernel: Out of memory: Killed process 13753 (clamd) total-vm:1250680kB, anon-rss:763016kB, file-rss:0kB, shmem-rss:0kB, UID:983 Feb 8 03:29:57 kamatans kernel: Out of memory: Killed process 13749 (clamd) total-vm:1292668kB, anon-rss:854828kB, file-rss:0kB, shmem-rss:0kB, UID:985 Feb 8 03:30:55 kamatans kernel: Out of memory: Killed process 13773 (clamd) total-vm:1071400kB, anon-rss:828420kB, file-rss:0kB, shmem-rss:0kB, UID:985 Feb 8 03:31:13 kamatans kernel: Out of memory: Killed process 13758 (clamd) total-vm:1298316kB, anon-rss:686208kB, file-rss:28kB, shmem-rss:0kB, UID:983 Feb 8 03:31:20 kamatans kernel: Out of memory: Killed process 13771 (clamd) total-vm:1256576kB, anon-rss:815760kB, file-rss:280kB, shmem-rss:0kB, UID:985 …
それにしても、1.1GB/プロセスとは重すぎる…。当初2GBでVMを構築していたのですでにメモリが不足しています。4GBに増設して起動できるようにしても以下のような始末…。
clamd@amavisdサービスしか起動しないようにしましたがそれでもメモリを2.2GBも消費しています。
top - 15:21:36 up 14:08, 2 users, load average: 0.00, 0.00, 0.00 Tasks: 276 total, 1 running, 275 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st MiB Mem : 66.4/3735.1 [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ] MiB Swap: 0.0/4152.0 [ ] PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1363 amavis 20 0 1477208 1.1g 9020 S 0.0 31.2 0:14.56 clamd 1337 named 20 0 733060 295784 7324 S 0.0 7.7 0:30.82 named 6159 amavis 20 0 343784 172620 12004 S 0.0 4.5 0:00.25 /usr/sbin/amavi 6160 amavis 20 0 343308 171936 12360 S 0.0 4.5 0:00.16 /usr/sbin/amavi 6158 amavis 20 0 340212 168784 10192 S 0.0 4.4 0:05.09 /usr/sbin/amavi 6576 root 20 0 252492 129100 11112 S 0.0 3.4 0:05.49 spamd 6582 root 20 0 252492 119916 1928 S 0.0 3.1 0:00.00 spamd child 6583 root 20 0 252492 119916 1928 S 0.0 3.1 0:00.00 spamd child 1273 root 20 0 223168 41044 39272 S 0.0 1.1 0:00.60 sssd_nss # # free -m total used free shared buff/cache available Mem: 3735 2208 707 32 819 1270 Swap: 4151 0 4151 #
# systemctl stop clamd@amavisd # free -m total used free shared buff/cache available Mem: 3735 805 2110 32 819 2673 Swap: 4151 0 4151 #
clamd@amavisdプロセスを停止してメモリ消費量を較べてみると当該プロセスだけで1.4GBのメモリを消費しています。
/usr/lib/systemd/system/clamd@.serviceを編集することでメモリ量やCPUの占有率などを制限することができます。
[Unit]
Description = clamd scanner (%i) daemon
Documentation=man:clamd(8) man:clamd.conf(5) https://www.clamav.net/documents/
After = syslog.target nss-lookup.target network.target
[Service]
Type = forking
ExecStart = /usr/sbin/clamd -c /etc/clamd.d/%i.conf
# Reload the database
ExecReload=/bin/kill -USR2 $MAINPID
Restart = on-failure
TimeoutStartSec=420
#IOSchedulingPriority = 7
#CPUSchedulingPolicy = other
#CPUSchedulingPriority = 5
MemoryLimit=512M
CPUQuota=30%
#Nice = 19
[Install]
WantedBy = multi-user.target
IOSchedulingPriority | ディスクIOに関する優先度を指定します(0 高優先 ⇔ 7 低優先) |
CPUSchedulingPolicy |
other: 通常の時分割スケジュール。Priorityは0のみ指定可能 batch: Otherに似ているがスケジューラがCPUに負荷がかかる想定をする。Priorityは0のみ指定可能 idle: 非常に優先度が低いジョブ。Priorityは0のみ指定可能 fifo: ファーストイン・ファーストアウト。Priorityは0より大きな値を指定可能 rr: ラウンドロビン。fifoの拡張 |
CPUSchedulingPriority | (99 高優先 ⇔ 0 低優先) |
MemoryLimit | メモリの割当の制限です。指定したメモリサイズ以上のサイズは当該プロセスでは利用できません。不足分はSwap領域を利用することになります |
CPUQuota | CPU使用率の上限を設定します |
Nice | niceレベルの指定です(0 通常 ⇔ 19 低優先) |
# systemctl daemon-reload # systemctl restart clamd@amavisd
メモリの使用率が512MBに抑えられたことが分かります。また512MBに収まらない分はスワップアウトされています。
top - 15:40:10 up 14:26, 3 users, load average: 0.18, 0.11, 0.04 Tasks: 269 total, 1 running, 268 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st MiB Mem : 42.7/3735.1 [||||||||||||||||||||||||||||||||||||||| ] MiB Swap: 16.8/4152.0 [|||||||||||||||| ] PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6803 amavis 39 19 1403476 528040 8724 S 0.0 13.8 0:16.92 clamd 1337 named 20 0 733320 296048 7324 S 0.3 7.7 0:31.87 named 6576 root 20 0 252492 129100 11112 S 0.0 3.4 0:05.57 spamd 6582 root 20 0 252492 119916 1928 S 0.0 3.1 0:00.00 spamd child 6583 root 20 0 252492 119916 1928 S 0.0 3.1 0:00.00 spamd child 1273 root 20 0 223168 41044 39272 S 0.0 1.1 0:00.61 sssd_nss # # free -m total used free shared buff/cache available Mem: 3735 1335 1576 32 822 2140 Swap: 4151 696 3455 #
一旦、この設定で様子を見てみたいと思います。
記事は以上!