treedown’s Report

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

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

sambaサーバでkernel Panicが発生、OOMって?

今日はDebianで動作しているsambaサーバがkernel Panicで停止してしまう現象が二回続いたので、調べてみた結果をご報告します。
「Out of memory: Kill process」が発生していた、ということでした。

ふと気づけば…

ふと気づけば、Active Directoryのドメインコントローラをやっているsambaサーバ(のDNSサーバ)が応答しなくなっている…。
pingで応答は返すのに、コンソールを開けば無情にも「kernel Panic」の文字が散見されます。

かれこれ二回か三回ほど同じ状況になったため、OSに何かあったのか?と思い、ログを調べて見ることにしました。

ログ確認

まずはsyslogから、次にkernelログを見てみます。
----------------------------------------------
syslog
--------------------------------
Aug 4 19:38:23 HostNAME kernel: [267371.791048] Out of memory: Kill process 732 (samba) score 7 or sacrifice child
Aug 4 19:38:23 HostNAME kernel: [267371.791138] Killed process 732 (samba) total-vm:497584kB, anon-rss:0kB, file-rss:0kB
Aug 4 19:38:41 HostNAME winbindd[34124]: [2017/08/04 19:38:22.725066, 0] ../source3/winbindd/winbindd_cm.c:1670(wb_open_internal_pipe)
Aug 4 19:38:41 HostNAME winbindd[34124]: open_internal_pipe: Could not connect to lsarpc pipe: NT_STATUS_UNSUCCESSFUL
Aug 4 19:38:42 HostNAME winbindd[752]: [2017/08/04 19:38:22.883395, 0] ../source3/winbindd/winbindd.c:285(winbindd_stdin_handler)
Aug 4 19:38:42 HostNAME winbindd[752]: EOF on stdin (is_parent=1)
--------------------------------
kern.log
--------------------------------
Aug 4 19:38:23 HostNAME kernel: [267371.791048] Out of memory: Kill process 732 (samba) score 7 or sacrifice child
Aug 4 19:38:23 HostNAME kernel: [267371.791138] Killed process 732 (samba) total-vm:497584kB, anon-rss:0kB, file-rss:0kB
--------------------------------

両方のログには、
「Out of memory: Kill process」
とあってそれに続いて
「 (samba) score 7 or sacrifice child」
と記述があるので、メモリ不足でsambaプロセス(子プロセス?)が止められちゃった、というのが問題の要因に見ました。
(※別名で「OOM」とか「OOM Killer」と呼ぶらしい。)
続けて「Killed process 732 (samba) total-vm:497584kB, anon-rss:0kB, file-rss:0kB」とあるので、OOM Killerによってsambaのプロセスが止められてしまった(強制停止を喰らった)ためにサーバの動作がおかしくなった、という考え方ができます。
その後のsyslogの行で「winbindd」が「lsarpcパイプに接続できませんでした:NT_STATUS_UNSUCCESSFUL」と言ってますし、lsarpcってくらいだからリモートプロシージャコール関連のなんかってことだろうと想像。
てことは、sambaプロセスがメモリ不足で切られたことで、動作しなくなってしまった、と考えるのが自然です。

実施したのは2点

これは、ちょっと経過観察をしたい、ということで、メモリを増やすことに。

このサーバはHyper-VのゲストOSとしてDebian Jessieをインストールして、その上でsambaを利用していました。
メモリは1024MB、動的メモリで増減させていたのですが、これを
メモリ容量2048MBに増量し、動的メモリを無効化⇒固定して常に2048MBを利用するようにする
という具合に変更してみました。これでkernel Panicが起きるかどうかを確認してみようと思います。