・ClamAVがメモリを大量消費するので使用量を制限する手順を知りたい。
・具体的な手順を分かりやすく教えてほしい。
こういった疑問に答えます。
本記事の内容
- ClamAVがメモリを大量消費するので使用量を制限する手順
この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。
こういった私が、解説していきます。
私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。
ClamAVがメモリを大量消費するので使用量を制限する手順
現在の状態
AlmaLinux, RockyLinuxにClamAVをインストールして使っていると、メモリを大量に使用してしまいます。
Ploxmox上の仮想マシンで、メモリ4GBで90%以上の使用率になっていました。
top
コマンドで見てみると、「clamd」が1.2GBも使用していました。
[root@SV-ALTAIR ~]# free -m total used free shared buff/cache available Mem: 3915 1651 165 8 2098 1974 Swap: 1023 266 757
[root@SV-ALTAIR ~]# top top - 07:51:23 up 5 days, 19:58, 1 user, load average: 0.07, 0.06, 0.02 Tasks: 116 total, 1 running, 115 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.2 us, 0.3 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.2 hi, 0.2 si, 0.0 st MiB Mem : 3915.9 total, 164.7 free, 1652.3 used, 2099.0 buff/cache MiB Swap: 1024.0 total, 757.3 free, 266.7 used. 1973.7 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 781 root 20 0 1820836 1.2g 5632 S 0.0 32.4 74:06.55 clamd
clamdの設定ファイルの変更
メモリの使用量の上限を「768MB」にしてみます。
/usr/lib/systemd/system/clamd@.service
[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=600
MemoryLimit=768M ←★★★★追加
CPUQuota=30% ←★★★★追加
[Install]
WantedBy = multi-user.target
設定変更後のデーモン再起動
[root@SV-ALTAIR ~]# systemctl daemon-reload [root@SV-ALTAIR ~]# systemctl restart clamd@scan
変更後の状態を確認
[root@SV-ALTAIR ~]# systemctl status clamd@scan ● clamd@scan.service - clamd scanner (scan) daemon Loaded: loaded (/usr/lib/systemd/system/clamd@.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2023-07-22 18:49:19 JST; 15h ago Docs: man:clamd(8) man:clamd.conf(5) https://www.clamav.net/documents/ Process: 191748 ExecStart=/usr/sbin/clamd -c /etc/clamd.d/scan.conf (code=exited, status=0/SUCCES> Main PID: 191749 (clamd) Tasks: 2 (limit: 24826) Memory: 732.8M (limit: 768.0M) ←★★★★メモリ使用量の上限 CGroup: /system.slice/system-clamd.slice/clamd@scan.service mq191749 /usr/sbin/clamd -c /etc/clamd.d/scan.conf 7月 23 08:39:04 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK. 7月 23 08:49:04 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK. 7月 23 08:59:04 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK. 7月 23 09:09:04 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK. 7月 23 09:19:04 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK. 7月 23 09:29:04 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK. 7月 23 09:39:04 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK. 7月 23 09:49:05 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK. 7月 23 09:59:05 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK. 7月 23 10:09:05 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK.
[root@SV-ALTAIR ~]# free -m total used free shared buff/cache available Mem: 3915 1265 1618 24 1032 2372 Swap: 1023 639 384
freeメモリが増えて、clamdの使用量が減りました。
[root@SV-ALTAIR ~]# top top - 10:21:28 up 17 days, 1:37, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.2 hi, 0.0 si, 0.0 st MiB Mem : 3915.9 total, 1617.9 free, 1264.9 used, 1033.1 buff/cache MiB Swap: 1024.0 total, 384.2 free, 639.8 used. 2372.8 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 191749 root 20 0 1821288 695836 7968 S 0.0 17.4 15:38.43 clamd
Ploxmox上でのメモリ使用状況も改善されました。