treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

エラーexim paniclog on host has non-zero sizeが届く

テスト環境で用意しているサーバで動作させているLogwatchからエラーを意味するアラートメールが届いたのでご報告です。
そのエラーは「exim paniclog on host has non-zero size」でした。

エラーのアラートが届く

ある日、テスト環境として利用しているsambaサーバからアラートメールを受信しました。

む?サーバがエラーか、と思い、メールを見てみると…

--------------------------------------------------------------
exim paniclog /var/log/exim4/paniclog on %hostname%.treedown.net has non-zero size, mail system might be broken. The last 10 lines are quoted below.

2019-03-xx 09:31:18 daemon: fork of queue-runner process failed: Cannot allocate memory
2019-03-xx 10:01:19 daemon: fork of queue-runner process failed: Cannot allocate memory
2019-03-xx 10:31:21 daemon: fork of queue-runner process failed: Cannot allocate memory
2019-03-xx 11:01:23 daemon: fork of queue-runner process failed: Cannot allocate memory
2019-03-xx 11:31:25 daemon: fork of queue-runner process failed: Cannot allocate memory
2019-03-xx 12:01:26 daemon: fork of queue-runner process failed: Cannot allocate memory
2019-03-xx 12:31:27 daemon: fork of queue-runner process failed: Cannot allocate memory
2019-03-xx 13:01:29 daemon: fork of queue-runner process failed: Cannot allocate memory
2019-03-xx 13:31:30 daemon: fork of queue-runner process failed: Cannot allocate memory
2019-03-xx 14:01:32 daemon: fork of queue-runner process failed: Cannot allocate memory
-------------------------------------------------------

冒頭が
「%hostname%.treedown.netのexim paniclog /var/log/exim4/paniclogのサイズが0以外で、メールシステムが壊れている可能性があります。 最後の10行は以下に引用されています。」

エラーメッセージは
「daemon:キューランナープロセスのforkに失敗しました:メモリを割り当てることができません」

原因

「Cannot allocate memory」とあるので、純粋に「プロセスが動作するために割り当てるメモリが足りないよ」ということになります。

単純にメモリを増やせばいいということになります。

このサーバはHyper-Vで動作し動的メモリを有効化しているので、「最大RAM」の値を増やして対処完了。

f:id:treedown:20190316134700p:plain
ゲストOSのメモリ割り当て値を変更するにはゲストOSをシャットダウンしておく必要があります。
メモリの設定値を変更したら、ゲストOSを再度起動して対処完了、とおもっていたけど、paniclogの対処はもう一つやることがありました。

メモリを増やしても届くエラー

対処した翌日に同じエラーメッセージを受け取ってしまいました。

メモリを増やしてもエラーが届く場合、エラーは解消したもののログファイル(paniclog)が残存しているために、エラーアラートメールが引き続き配送されることになります。

f:id:treedown:20190316134755p:plain
そのため、ログファイル(今回でいえば/var/log/exim4/paniclogファイル)を移動するなり削除するなりして、paniclogを存在しないような状態にしてやる必要があることになります。

f:id:treedown:20190316134806p:plain
そこで
rm /var/log/exim4/paniclog
なり
mv /var/log/exim4/paniclog %移動先%
なりで、/var/log/配下からpaniclogというファイルが存在しないようにしておきます。

これでアラートが管理者宛に飛ばなくなったので、ちゃんと対処完了したと判断できます。