質問: apache httpdが100%cpuを無期限に使用する原因となるもの 負荷の軽いapache httpd 2.0を実行しているアプリケーションで、apacheプロセスの1つ(またはそれ以上)が100%cpuを消費するという問題が時々発生しました。現在、httpd 2.2を実行していますが、これも2.2で見たことがあるかもしれません。よくわかりません。場合によっては、cpu使用率が原因で、httpdをホストしているwindowsサーバーへのコンソールアクセスを除くすべてがブロックされました。 apacheがこれを行う原因を突き止めることはできませんでした。環境は、mod_rewriteを使用して静的コンテンツを直接提供するapache httpdですが、それ以外のカスタム構成はほとんどありません。 httpdはmod_jk(1.2.25)を介してapache tomcat(5.x)と通信しています。他の誰かがこれに遭遇して解決しましたか?インストールした回避策は、次の構成で、各apache httpdサブプロセスをリクエストの最大数に制限することです。maxrequestsperchild 1000 アプリケーションはhttp/1.1を使用するため、これは実際には子プロセスごとに1000を超えるリクエストであり、子プロセスごとに100,000リクエストに近いものです。
回答: ロックアップは、apache自体ではなくモジュールで発生している可能性が高いです。あなたの設定はかなり最小限に聞こえるので、私は疑うだろうmod_jkを犯人として。 maxrequestsperchildを制限することで問題が解決した場合、それは許容できる回避策です。モジュールのバグがトリガーされるのは、長い時間または多くのリクエストがあった後である可能性があります。これを追跡することに本当に熱心でない限り、おそらくそれで十分です。それを追跡したい場合、最初に行うことは、サーバーユーザーが書き込み可能な場所を指すようにcoredumpdirectoryを構成することです。問題のプロセスにコアファイルを残してもらうことができる場合は、問題の原因を追跡するのに役立ちます。 apache debugging guide でこれを行うためのいくつかのヒントを見つけることができます。