373 文字
2 分
Mozilla Thunderbirdを使うとIMAPサーバ暴走

IMAPサーバを動かしているサーバのロードアベレージが70ぐらいになって、大変なことになっていた。

  • IMAPサーバ:dovecot-0.99.11-9.EL4 (ファイルシステムext3)
  • IMAPクライアント:2.0.0.17

状況は、ps axuするとIO待ちのimapプロセスが大量に存在する。

原因がわかったので、書いておく。
今回の場合、Trashフォルダに数万件のメールがあり、何かのメールを削除するとThunderbirdがTrashフォルダに
新規スレッドでアクセスする。
ファイルが大量にあるMaildirを見ると以下のように、ディレクトリ自体の容量が大きい。

Terminal window
% ls -al
drwx------ 2 matsu matsu 95M Sep 20 10:19 cur
drwx------ 2 matsu matsu 7.9M Sep 20 10:19 new
drwx------ 2 matsu matsu 9.1M Sep 24 08:00 tmp

そのスレッドの処理にimapサーバが長時間かかる。
また、メールを削除するたびにサーバ側でimapスレッドが生成されてしまう。

そのため、ファイル削除に加えて、ディレクトリの再作成をすれば回復する。

Terminal window
% cd ~/Maildir/.Trash/

以下のスクリプト実行する。

Terminal window
for target in cur tmp new
do
find $target -type f -exec rm {} \;
rmdir $target
mkdir $target
chmod 700 $target
done

ファイルを削除するだけだと、だめ。inodeのフラグメントがあるらしく時間がかかるからディレクトリを再作成してあげる必要がある。

暴走したプロセスをkillするためのコマンドメモ。

Terminal window
# ps axuwwf | grep imap | grep matsu | grep -v ps | grep -v grep | gawk '{print $2;}' | xargs sudo kill -9

ユーザ名部分の”matsu”を適宜置き換えてください。
killのsignalは(9)KILLじゃないと落ちてくれないです。

Mozilla Thunderbirdを使うとIMAPサーバ暴走
https://blog.teraren.com/posts/mozilla-thunderbirdを使うとimapサーバ暴走/
作者
Yuki Matsukura
公開日
2008-10-07
ライセンス
CC BY-NC-SA 4.0

コメント