そういうのがいいブログ

SIerで働く30代サラリーマンSEがインフラエンジニアに憧れてLinux・クラウド・AWSの勉強をするブログ

ClamAVがメモリを大量消費するので使用量を制限する手順

※[PR]当ブログの記事の中にはプロモーションが含まれています。

ClamAVがメモリを大量消費するので使用量を制限する手順を知りたい。
・具体的な手順を分かりやすく教えてほしい。

こういった疑問に答えます。

本記事の内容

  1. ClamAVがメモリを大量消費するので使用量を制限する手順

サトナカ (@souiunogaii)

この記事を書いている私は、某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

 723 08:39:04 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK.
 723 08:49:04 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK.
 723 08:59:04 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK.
 723 09:09:04 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK.
 723 09:19:04 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK.
 723 09:29:04 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK.
 723 09:39:04 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK.
 723 09:49:05 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK.
 723 09:59:05 SV-ALTAIR clamd[191749]: SelfCheck: Database status OK.
 723 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上でのメモリ使用状況も改善されました。