AmazonEC2でclamAVを使うときの注意


motherboard-server-2最近・・というか構築した当初からずっとですけれど、どうもEC2のインスタンスが停止しやすいんです。オイラのTwitterでも何度か悲鳴が上がっていますが :-( だいたい朝5時半ごろ、サーバ監視スクリプトからメールが届いて、停止したインスタンスが復活するのを待つ状態。停止してしまうと、復活するまで管理者が何もできないところがEC2の問題点。状態調査しようにもなにもないしね。

とは言ったってインスタンスのバックアップを取っておいて、停止したらそれを起動しろよというのがEC2のスタンスではありますけれど。安いんだし、そういうところは大目にみましょうよ、というのが向こうのポリシーだと思います。

さてさて前置きが長くなりましたが、そうは言ったってこう2・3日に1回止まってしまうなんてとんでもない。とりあえず原因を調査してみました。すると、どうもclamAVが悪さをしているようなんです。

clamAV、アンチウィルスソフトですね。念のため、というわけではありませんがオイラが管理しているサーバにはclamAVを入れています。

このソフト、すごくメモリを喰うんです。

1
2
3
4
5
6
7
8
9
10
11
[root@hogehoge ~]# top
...「M」と打ってメモリ消費の多い順に並べると...
top - 10:27:38 up 10 days, 18:28,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  97 total,   2 running,  95 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.0%us,  0.3%sy,  0.0%ni, 96.8%id,  0.0%wa,  0.0%hi,  0.0%si,  1.9%st
Mem:   1718068k total,  1656360k used,    61708k free,    84980k buffers
Swap:   917500k total,     5492k used,   912008k free,  1302404k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
18922 root      20   0  117m 100m 5704 S  0.0  6.0   1:02.92 clamd
...clamdがトップに来る!...

clamAVは毎朝5時半にcronで定期的に動かしてウィルス検索を行っています。日ごとに実行されるので、2・3日経つとメモリを大量に喰ってしまい、システムダウンの原因になると考えられます。

ですので、これもまた面倒ですけれどclamAVを再起動して、メモリ解放を促します。

1
2
3
4
5
6
7
8
9
10
11
[root@hogehoge ~]# service clamd restart
clamd を停止中:                                            [  OK  ]
clamd を起動中:                                            [  OK  ]
[root@hogehoge ~]# top
Tasks:  99 total,   1 running,  98 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.5%id,  0.5%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1718068k total,  1602168k used,   115900k free,    85880k buffers
Swap:   917500k total,     5492k used,   912008k free,  1245144k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 9931 root      20   0  117m  95m  472 S  0.0  5.7   0:00.00 clamd

メモリの空き容量が上がったのがお分かりでしょうか?こんな感じでメモリ解放を行うと、インスタンスが落ちないようになります。

clamAVをEC2上で使っている場合はぜひお試しください。