2017-04-12 7 views
0

私はminikube(kubernetes)開発環境のドッカーコンテナにホストされている普遍的な反応アプリを持っています。私はvirtualboxを使用していますが、実際にはこのVMでより多くのマイクロサービスを利用しています。ローカルで動作するサービスがドッカーで頻繁にシグナルを殺すのはなぜですか?

この反応アプリでは、サーバーコードの変更時にpm2を使用してアプリケーションを再起動し、クライアントコードの変更時にクライアントコードをホットリロードするためにwebpack hmrを使用します。

すべて15秒〜45秒と言うと、pm2は、SIGKILLのためにアプリが終了したことを示す次のメッセージを私に記録しています。

App [development] with id [0] and pid [299], exited with code [0] via signal [SIGKILL] 

なぜ私はそれが起こっているのか理解できません。それは比較的頻繁ですが、それほど頻繁ではなく毎秒発生します。それが起こるたびに、私のwebpackバンドルは再コンパイルする必要があるので、かなり迷惑です。

pm2がこのタイプの開発環境でSIGKILLを受け取る理由は何ですか?また、これをデバッグするいくつかの方法がありますか?

pm2を使用してサーバーの変更を再開するサービスが、バックエンドサービスである場合にこの問題が発生していないことに気付きました。私。彼らはwebpackを持っていません。加えて、私はこれらのSIGKILLの問題が私の巧妙なバージョンのアプリでは見られません。 Webpack hmr setup、pm2、minikube/dockerの組み合わせにはいくつか問題があることが示唆されています。

私はローカルで(ドッカー/ミニクーではありません)アプリを試しましたが、sigkillsなしでうまく動作するので、独自にwebpack hmrすることはできません。 kubernetesは多くのメモリを使用するサービスを停止しますか? (おそらく、私のアプリがたくさんのメモリを使っていると思うかもしれない)。そうでない場合、クベネネやドッカーがSIGKILLを送信する理由は何でしょうか?これをデバッグする方法はありますか?

ご指摘いただきありがとうございます。ありがとう

+0

あなたのポッドが実行されている名前空間から 'kubectl get events'の出力は何ですか?比較的頻繁に起こる場合、 'kubectl get events --watch'を実行する価値があります。 – jaxxstorm

答えて

1

あなたが投稿したエラーメッセージからはかなりわかりませんが、通常これはカーネルのOOM Killer(Out of Memory Killer)がプロセスを取り出した結果です。これは、あなたのプロセスが多すぎるメモリを使い過ぎているか、あるいは過度に攻撃的で、それが殺されるようにするあなたのコンテナのcgroup設定を持っているためです。また、VirtualBoxインスタンスに割り当てられていないメモリがあるかもしれません。

通常はドッカーは、コンテナが問題になっているノード上のdocker ps -a

dmesgたり、syslogの中にコード137で終了したことを報告すると、カーネルのOOMキラー出力を示すことがわかります。

+0

あなたはスポットにいました。 dmesgを使用して、私はプロセスを殺したのはそれがオム・キラーだということが分かりました。 OOMを引き起こしているものをデバッグするために、私はちょっと勘違いしています。あなたの提案にTY! –

関連する問題