0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

低スペックEC2インスタンスでClamAVを動かす際の対策

Posted at

はじめに

ClamAV を低スペックのEC2インスタンスにインストールして利用しようとした際に問題が発生したため、メモとしてまとめておきます。

今回の対象サーバーのスペックは以下の通りです。

  • OS: Amazon Linux 2023
  • インスタンスタイプ: t3a.small
  • ボリューム: 10GB(gp3)
  • スワップ: なし

問題

単純に clamscan を実行すると、サーバーがビジー状態になり(ほとんど)反応しなくなります。

CloudWatch で調査したところ、ビジー状態のディスクのアイドル時間が 0% になっていることが分かりました。
top コマンドで実行中の状況を確認したところ、空きメモリが大きく減少し、kswapd0 がプロセス一覧の上位に上がってきていることを確認しました。 これはメモリ不足の症状です。

こうなると、メモリ上のページキャッシュが強制的に破棄されることになります。 すると、バックグラウンドのプロセスが頻繁にディスクアクセスするようになり、I/O がビジー状態になります。
その結果、サーバー全体がほぼ稼働できないような状態のループに入ってしまい、反応が極端に遅くなります。

ClamAV が必要とするメモリ量

調べたところ、ClamAV はスキャンの際に 約 1.5GB のメモリを必要とすることが分かりました。
実際に top を確認した際の値は以下の通りで、VIRT(仮想メモリ総量)が約 1.6GB、RES(実際に使用している物理メモリ)が約 1.2GB となっており、小規模インスタンスにとっては非常に重い処理であることがわかります。

top - 00:19:34 up 26 min,  3 users,  load average: 1.05, 0.89, 0.53
Tasks: 122 total,   2 running, 120 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.5 us,  2.0 sy, 40.2 ni, 49.1 id,  2.5 wa,  0.0 hi,  0.0 si,  5.7 st
MiB Mem :   1907.3 total,     99.8 free,   1579.8 used,    227.7 buff/cache
MiB Swap:   2048.0 total,   1809.7 free,    238.2 used.    175.0 avail Mem 
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                    
   4726 root      39  19 1672444   1.2g   4596 R  84.7  66.2   7:17.22 clamscan
  • 補足: I/O ビジーによるフリーズを繰り返したため、この clamscan の実行時にはプロセスの優先度を下げて実行しています。 しかし、メモリが足りない状態だと優先度を下げても挙動は変わりませんでした

解決方法

この問題を根本的に解決するには、利用可能なメモリを増やす必要があります。具体的な対策としては以下のいずれかになります。
それぞれ一長一短があるので、自分のケースにあった方法を選択してください。

1. インスタンスタイプを一時的に変更する

スキャン実行時だけ t3a.small(2GB)→ t3a.medium(4GB)に変更し、スキャン後に戻します。
以下のメリットがありますが、一時的なサーバーダウンと定期実行のための自動化が別途必要です。

  • メモリ不足を確実に解消
  • ディスク I/O の逼迫がほぼ解消
  • 数時間だけ medium の料金が加算されるだけで、追加コストは最小

2. swap を追加する

Amazon Linux 2023 はデフォルトで swap が無いため、自分で作成する必要があります。
具体的な手順は以下の記事を参照下さい。

今回は t3a.small(メモリ2GB)に 2GB の swap を追加したところ、I/O ビジーが収まり、clamscan が正常に動作するようになりました。
ただし、swap は物理メモリに比べて低速なため、スキャン時間は長くなります。

参考

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?