Solrの停止がゾンビプロセスに対応しません - 対応するべきでしょうか?
(The bot translated the original post https://lists.apache.org/thread/lmldhwh6440fyvloqodfc4q1rfsdmlbc into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)
こんにちは、
Linux上でSolrを停止する際に、このコマンドが使用されます:CHECK_PID=\
ps auxww | awk '{print $2}' | grep -w $SOLR_PID | sort -r | tr -d ' '``
https://github.com/apache/solr/blob/122c88a0748769432ef62cc3fb94c2226dd67aa7/solr/bin/solr#L871
Solrが停止したがゾンビプロセスとして残っている場合、そのプロセスエントリはテーブルに残るため、ps auxww
はkill -9の後もPIDを表示し続けます。その結果、以下のようになり、停止に3分無駄に費やされます。
[2021-07-21T09:15:12.365Z] Sending stop command to Solr running on port 8983 ... waiting up to 180 seconds to allow Jetty process 12622 to stop gracefully.
[2021-07-21T09:18:13.551Z] [|] Solr process 12622 is still running; jstacking it now.
[2021-07-21T09:18:21.806Z] 12622: Unable to open socket file /proc/12622/root/tmp/.java_pid12622: target process 12622 doesn't respond within 10500ms or HotSpot VM not loaded
[2021-07-21T09:18:21.806Z] Solr process 12622 is still running; forcefully killing it now.
[2021-07-21T09:18:21.806Z] Killed process 12622
[2021-07-21T09:18:31.678Z] ERROR: Failed to kill previous Solr Java process 12622 ... script fails.
しかし、ps auxww
の出力はSTATの下にゾンビプロセスを識別します:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 12622 1.4 0.0 0 0 pts/1 Z 10:42 0:26 [java] <defunct>
したがって、CHECK_PIDはゾンビプロセスをフィルタリングすることができます。
明らかに、大きな問題はなぜプロセスがゾンビとして終了したかです(この場合、SolrをDockerコンテナ内で実行する際に"--init"を指定しなかったためです)。
https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/
そのため、ユーザーが対応できるように、プロセスがゾンビであることを警告するメッセージを追加する価値があるかもしれません。
他に代替の提案がなければ、JIRAでこの問題を報告し、修正案を提出する予定です。
よろしくお願いします、
Colvin
トピックへ返信するには、ログインが必要です。