恐ろしい256の最大接続に達した後の対処法Apacheの制限


9

サーバーリソースに問題がないにもかかわらず、サイトの応答が遅い理由を理解しようと頭を悩ませた後、Apacheのステータスを確認したところ、次のことがわかりました。

78 requests/sec - 0.7 MB/second - 8.5 kB/request
256 requests currently being processed, 0 idle workers

私のapacheは文字通り接続でいっぱいになっているようです。私のサイトにアクセスしようとする人は、Apacheが再び解放されるまで「待機リスト」に入れられます。

2つのオプションがあるようです。

A)最大接続数の制限を256より大きくします。この記事によるとそれほど簡単ではありませんが、

デフォルトでは、MaxClientsパラメータは256のハード制限でコンパイルされています。ただし、これはApacheを再コンパイルすることで変更できます。一部のディストリビューションまたはホスティング会社は、大きな負荷に対処するために、この制限を512または1024などの非常に高い値に引き上げています。

B)時間がかかりすぎるスクリプトを見つけます。ほとんどのapacheプロセスが表示され、その後再び表示されなくなるので、これは私にとってはるかにトリッキーなようです。また、私のサイトのPHPスクリプトは非常に適切に最適化されています...もう一度、サーバーリソースは問題ありません。

Server load 2.69 (8 CPUs)   
Memory Used 25.33% (2,039,108 of 8,048,804) 
Swap Used   1.32% (54,156 of 4,095,992)

どのオプションを選択した場合(どちらかを選択した場合)、どのようにすればよいですか?

編集

詳細:サーバーバージョン:Apache / 2.2.23(Unix)mod_ssl / 2.2.23 OpenSSL / 1.0.0-fips DAV / 2 mod_auth_passthrough / 2.1 mod_bwlimited / 1.4 FrontPage / 5.0.2.2635

HTTP設定:http : //pastebin.com/yBeLt6mP

Parital Requestサンプル:http ://pastebin.com/vzUVDMPR

ペーストビンが奇妙に表示される場合は、テキストの折り返しを切り替えます。


引用した記事は6年前のものです。ソフトウェアの変更。シェーンの回答を参照してください。
クリスS

1
@ChrisSさらに古い-コンパイルされた制限は1.xのものでした(2.0は2002年にリリースされました)。この記事は2.0ドキュメントに明示的にリンクしています。
シェーンマッデン

回答:


10

その記事は不正確です。MaxClientsprefork MPM(問題の説明に基づいて現在使用していると私が想定しているもの)を使用している場合、256を超える可能性があります。ドキュメントから:

スレッド化されていないサーバー(つまり、プリフォーク)の場合、MaxClients要求を処理するために起動される子プロセスの最大数に変換されます。デフォルト値は256です。増やすには、も上げる必要がありますServerLimit

ServerLimitハードコンパイルされた制限があるものですが、サーバーが他のボトルネックに陥ることなく到達する必要があるところをはるかに超えています。 ドキュメンテーション

ServerLimit 20000サーバーにコンパイルされるハードリミットがあります(prefork MPM 200000の場合)。これは、タイプミスによる厄介な影響を回避するためのものです。

したがって、クライアントの制限を512などに引き上げたい場合は、次のようにします。

MaxClients 512
ServerLimit 512

prefork以外のMPMの方がスケールに適しているため、使用しているMPMも確認する必要があります。詳細については、こちらをご覧ください。


core.cとworker.cの実行を確認しますhttpd -l。私はワーカーMPMを実行していることを意味すると思いますか?
kmoney12 2013

実際@hellohellosharp -その場合、あなたが潜在的にあなたを調整したいと思うMaxClientsServerLimitThreadsPerChild、とThreadLimit。現在のワーカー構成を提供できますhttpd.confか?
シェーンマッデン

はい...これを公開することに危険はありますか?うまくいけばない、ここにある:pastebin.com/yBeLt6mP
kmoney12

いいえ、ほとんどのhttpd.confファイルの投稿に問題はありません。パスワード/ユーザー名/などのコメントのような奇妙なものがないことを確認してください。これらは、プロキシ設定セクションなどにも時々入り込みます。あまりにもIPとドメイン名のうち編集のような多くの人々 、ちょうどので、彼らが注目を集めていない
クリス・S

1
ステータスモジュールは、これらの詳細を表示できます。
2013

-1

nginxやlighttpdなどは、apacheよりも多くの接続を処理できるリバースプロキシを使用することをお勧めします。サイトがhtaccessをどのように使用しているかに応じて、nginx / lighttpdをfcgiとforego apacheで完全に使用することもできます。


4
本当に??彼は2行の設定を追加する必要がhttpd.confあり、あなたの解決策は彼が実行しているほとんどのソフトウェアを取り除き、それを置き換えることです?!すべてのソフトウェアに問題がありますが、教育を受けていない誤用はさらに深刻な問題を引き起こします。
Chris S

最終的に、nginxはより多くのアクティブな接続を処理できます。OPが何を使用するかを決定するまで、私は提案を進めていました。
Shoshomiga 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.