問題タブ [zombie-process]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
fedora - initはゾンビ/defunctプロセスを刈り取ることはありません
カーネル2.6.18を搭載したFedoraCore9 Webサーバーでは、initはゾンビプロセスを取得していません。これは、プロセステーブルが最終的に上限に達し、新しいプロセスを割り当てることができない場合には耐えられます。
のサンプル出力ps -el | grep 'Z'
:
これはOSのバグですか?設定ミス?この問題の原因についてのインスピレーションを探しています。ありがとう
perl - Apache 1.3 で実行される Perl CGI スクリプトでゾンビを回避するにはどうすればよいですか?
さまざまな Perl スクリプト (サーバー サイド インクルード) が、Web サイト上の多くの機能を備えた Perl モジュールを呼び出しています。 編集: スクリプトはuse libを使用して、フォルダーからライブラリを参照しています。繁忙期には、スクリプト (ライブラリーではない) がゾンビになり、サーバーに過負荷がかかります。
サーバーには次のリストが表示されます。
私はそれぞれ何百ものインスタンスを持っています。
編集: SSI ディレクティブを除いて、fork、system、または exec を使用していません。
私の知る限り、この場合、httpd 自体がプロセスの所有者になります。MaxRequestPerChild が 0 に設定されているため、子プロセスが終了する前に親プロセスが終了することはありません。
これまでのところ、一部のスクリプトを一時的に中断することで、サーバーが機能していないプロセスに対処し、倒壊するのを防ぐことができると考えていましたが、ゾンビ プロセスがまだ形成されていることは疑いの余地がありません。どうやらgbaconは、サーバーが負荷に対処できないという彼の理論に最も近いようです。
httpd がこれらのプロセスを放棄する原因は何ですか? これらの発生を防ぐためのベストプラクティスはありますか?
ありがとう
回答: ポイントはロブに行きます。彼が言うように、SSI を生成する CGI スクリプトはそれらの SSI を処理しません。SSI の評価は、Apache 1.3 要求サイクルで CGI を実行する前に行われます。これは Apache 2.0 以降で修正され、CGI が SSI コマンドを生成できるようになりました。
Apache 1.3 で実行していたため、ページ ビューごとに SSI が無効なプロセスに変わりました。サーバーはそれらをクリアしようとしましたが、実行中のタスクで忙しすぎて成功できませんでした。その結果、サーバーがダウンし、応答しなくなりました。短期的な解決策として、すべての SSI を見直し、一部のプロセスをクライアント側に移動して、サーバー リソースを解放し、クリーンアップする時間を確保しました。その後、Apache 2.2 にアップグレードしました。
c - Linuxで機能していないプロセスを検出する方法は?
C言語で書かれた親プロセスと子プロセスがあります。親プロセスのどこかで、HUP シグナルが子プロセスに送信されます。親プロセスが子が死んでいるかどうかを検出したい。しかし、SIGHUP を送信すると、子プロセスがゾンビになります。子が親プロセスでゾンビであるかどうかを検出するにはどうすればよいですか? 以下のコードを試してみましたが、子プロセスはまだ存在していますが機能していないため、目的の結果が返されません。
もう 1 つ質問します。親を殺さずにゾンビの子供を殺すことはできますか?
ありがとう。
python - Python-daemon はその子を殺さない
python-daemonを使用する場合、次のようなサブプロセスを作成しています。
Ctrl-C や SIGTERM などで親のデーモン プロセス (ワーカーではないプロセス) を強制終了しても、子プロセスは終了しません。どうやって子供を殺しますか?
私の最初の考えは、atexitを使用してすべてのワーカーを殺すことです。
ただし、デーモンの子は扱いが難しいため、これをどのように行うべきかについての考えと情報を提供していただきたいと思います。
ありがとうございました。
linux - Linux bash スクリプトで 10 分前のゾンビ プロセスを強制終了する
私はyukondudeによる正規表現の答えをいじくり回してきましたが、ほとんど成功していません。10 分以上経過したプロセスを強制終了しようとしています。プロセスIDが何であるかはすでに知っています。私は10分ごとに配列をループして、残っているprocが周りにあり、殺す必要があるかどうかを確認しています. これについて簡単に考えている人はいますか?
sql-server - ADO.NET ゾンビ トランザクションのバグ? コマンドが暗黙のトランザクションで実行されないようにする方法は?
例) デッドロックが発生した場合、以下の SQL コマンドは、ロールバック後の SQL トランザクションを割り当てた場合でも、正常に実行されます。SQL Server で作成された新しい暗黙のトランザクションが原因のようです。
コマンドがゾンビ トランザクションで実行されているという例外を ADO.NET がスローすると予想する人もいるでしょう。ただし、そのような例外はスローされません。(これは ASP.NET のバグだと思います。) さらに、ゾンビ トランザクションが原因で、ファイナルDispose()
は黙ってロールバックを無視します。
暗黙のトランザクションで誰もコマンドを実行できないようにするにはどうすればよいですか? または、トランザクションがゾンビであることを確認する方法は? 私はそれを見つけてゾンビトランザクションCommit()
をRollback()
チェックしましたが、テストのためにそれらを呼び出すことができます:)
また、IsolationLevel を読み取るとチェックが行われることもわかりましたが、単純な呼び出しtransaction.IsolationLevel.ToString();
が将来のオプティマイザーによって削除されないかどうかはわかりません。または、ゲッターを呼び出す他の安全な方法を知っていますか (リフレクションや IL の放出を使用せずに)。
編集: Remus Rusanu は、このような状況は通常発生しないと指摘しました。はい、本当です。通常、コードにバグがある場合に発生します。私たちの場合、データベースに失敗を保存しようとしていた最終ステートメントに、いくつかのロギング ルーチンがありました。現在、将来このようなバグを検出する方法を見つけようとしています。これらのバグはテストが難しいためです。提供されたトランザクションがゾンビであることを ADO.NET がチェックする場合、このバグははるかに簡単に発見されます。私は2つの可能性を見つけました:
- 暗黙的なトランザクションの作成をオフにします - これが可能かどうかはわかりません。
- コマンドを実行する前に、ゾンビ トランザクションが実行されるかどうかを確認してください。
zombie-process - ゾンビとは何ですか? また、その原因は何ですか? ゾンビ プロセスとゾンビ オブジェクトはありますか?
ゾンビに関する質問は見つかりますが、ゾンビとは何か、なぜ、どのように発生するのかを直接的に扱っているものはありません。特定の質問に答えるコンテキストでゾンビ プロセスとは何かを説明するものがありますが、原因は説明しません。
ゾンビ プロセスに関する質問や、Objective-C/Cocoa 関連のゾンビ オブジェクトに関する質問もあります。違いは何ですか、またはこれらはどのように関連していますか? Mac/iPhone の「EXEC_BAD_ACCESS」(または他のプラットフォームでの同様のエラー) はゾンビと同義ですか?
どうすればゾンビを防ぐことができますか? また、ゾンビを回避するのに役立つベスト プラクティスはありますか?
この情報を 1 か所にまとめておくと便利です。この質問は、可能であれば、プラットフォームや言語に依存しないことを意図しています。
python - Pythonpopenパイプの最初のプロセスを殺すことはできません
私はこのコードを使用しています
終了するとp1
、それp2
も終了します。
問題は:
手動でp2(mplayer)を閉じても、rtmpdump/p1はまだ実行されています。上記のような色々なことを試しましたが、それでも殺せません。を追加してみましclose_fds=True
た。
そのため、rtmpdumpはまだstdoutに書き込もうとしている可能性があります。しかし、なぜこれがkill()を失敗させるのですか?
完全なソースコード:http://github.com/solsticedhiver/arte-7.py
php - BOT/スパイダー トラップのアイデア
DDoS と思われるものによってドメインがかなり打撃を受けているように見えるクライアントがいます。ログでは、ランダムな IP を持つ通常のユーザー エージェントのように見えますが、人間とは思えない速さでページをめくっています。また、画像を要求しているようには見えません。パターンを見つけることができないようで、Windows ゾンビの艦隊ではないかと疑っています。
クライアントは過去に SPAM 攻撃で問題を抱えていました。MX を Postini に向けて、1 日あたり 6.7 GB のジャンクを取得し、サーバー側を停止する必要さえありました。
robots.txt で許可されていないディレクトリに BOT トラップを設定したいのですが... 誰かが BOT をトラップするための独創的なアイデアを持っていることを期待して、これまでにこのようなことを試みたことはありません!
編集:私はすでに 1 つをキャッチするための多くのアイデアを持っています..それは、トラップに着陸したときにそれをどうするかです.