imapdサーバーのCPU高負荷をなんとかしたい
結論から言います。
Mozilla Thunderbirdを使っている人がいたら、一度閉じて起動してください。
不気味な高負荷現象に遭遇する
サーバーのプロセス監視をしているとある日、imapdメールサーバー(Courier-IMAP)のプロセスが常にCPU使用率40%以上という現象に遭遇しました。
# ps axuwwf|grep imapd|grep -v ps|grep -v grep
popuser 22642 0.0 0.0 12892 3112 ? S 09:20 0:14 \_ /usr/bin/imapd Maildir
popuser 25543 45.1 0.0 12832 3028 ? S 10:23 99:16 \_ /usr/bin/imapd Maildir
popuser 31464 0.0 0.0 11624 1740 ? S 12:19 0:01 \_ /usr/bin/imapd Maildir
popuser 2999 0.0 0.0 13748 3876 ? S 13:36 0:00 \_ /usr/bin/imapd Maildir
popuser 5457 0.0 0.0 11072 1180 ? S 13:58 0:00 \_ /usr/bin/imapd Maildir
root 20584 0.0 0.0 4056 620 ? S 2016 2:25 /usr/sbin/courierlogger imapd
root 20593 0.0 0.0 4056 616 ? S 2016 0:10 /usr/sbin/courierlogger imapd-ssl
courier-imapd の再起動を試みるが…
気味が悪いので「courier-imapd restart」で再起動すると、一旦は消えるのですが、またしばらくすると復活してきます。
さらにメールログも含めて監視しながら調べてみると、特定のメールアカウントでの受信チェック時にその高負荷プロセスが発生することが判明。
高負荷のプロセス詳細を調査
プロセスIDを元に、どのアカウントにアクセスしているのかを「proc」から調べます。
# ls -lv /proc/9481/fd
total 0
lrwx------ 1 popuser popuser 64 Jan 17 15:16 0 -> socket:[2716631526]
lrwx------ 1 popuser popuser 64 Jan 17 15:16 1 -> socket:[2716631526]
l-wx------ 1 popuser popuser 64 Jan 17 15:16 2 -> pipe:[2716629853]
lr-x------ 1 popuser popuser 64 Jan 17 15:16 3 -> /var/qmail/mailnames/example.com/info/Maildir/courierimapkeywords/:list
上のドメイン部分は仮のものですが「info@example.com」アカウントが「Maildir/courierimapkeywords/:list」にアクセスしていることで高負荷がかかっているようです。
問題の原因はThunderbirdだった
対象のメールアカウントのメンバーに電話をして確認すると、以下のバージョンで発生しているようでした。
- Windows 10
- Thunderbird 45.6.0
とくにいつもと変わらない使い方をしているとのことで、詳細を調べようとすると迷宮入りしそうだったので、一旦Thunderbirdを終了してもらい、再度起動してもらうと、原因の高負荷プロセスも消え、問題ない状態に戻ってくれたのでした。 終わり。
2017-01-17