- ベストアンサー
ApacheのMaxclientsの設定について
- ApacheのMaxclientsの設定について詳しく調べてみましょう。
- Maxclientsを増やすことで負荷軽減が期待できるか検証してみましょう。
- Maxclientsの設定だけでなく、他のパラメータの設定も見直す必要があります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>制限回数を超えない場合はどのような動きになるのでしょうか? 制限回数を超えない場合は、通信が途絶えてからタイムアウトで設定した時間待ってセッションを切ることになります。 >この1秒って体感的にどんな感じでしょう??? 1秒と言っても前の人の通信が終わってセッションが切断されるまでの時間です。 同時接続数が足りずに、前の人の通信が終わるのを待っている時間はそれ以上にあるでしょうから、他の設定とのバランス次第だと思います。
その他の回答 (3)
- t_ohta
- ベストアンサー率38% (5242/13714)
> 「on」にした場合、例えば、ピーク時以外には画像も少なく負荷もかかっていない状況ですが、タイムアウトを短く・・・「1」くらいにしておけば問題ないですよね? KeepAlive On MaxKeepAliveRequests [TOPページにある画像ファイル等の数+5くらい] KeepAliveTimeout 1 とかがいいかもしれませんね。 KeepAlive は諸刃の剣で、アクセスユーザー数とサーバの処理能力のバランスが適切ならTCPセッション開始のオーバーヘッドが減り、快適にアクセス出来ます。 しかし、KeppAliveのせいでセッションを握ったままになってしまうと次の接続を受け付けられませんので、アクセスユーザー数が多い場合は接続までの待ち時間を発生させてしまう原因になります。 KeepAliveTimeout で適度にセッションを終了させるとともに、MaxKeepAliveRequests を使って一回の接続でKeepAliveしたままリクエストできる回数に制限を掛けて、セッションを切らせるといいでしょう。 MaxKeepAliveRequests にセットした制限回数を超えるとセッションを切ってくれるので、1ページで使用する HTML+画像やCSS、JavaScriptファイルの数にちょっとだけ余裕を持たせた数にセットしておくと、必要なファイルを持っていったらさっさとセッションを切ると言う事もできます。
お礼
詳細な説明、ありがとうございます! ちょっと質問があるのですが、 ・・・MaxKeepAliveRequests にセットした制限回数を 超えるとセッションを切ってくれる とありますが、制限回数を超えない場合はどのような動きになるのでしょうか? といいますのは、 ピーク時は画像の数が200くらい、閑散期は1 なんていう時もありまして、 ピーク時は教えていただいた設定がかなり有効とにらんでいますが 閑散期は、同じ設定の場合最低1秒はつかみっきりでしょうか? この1秒って体感的にどんな感じでしょう???
- t_ohta
- ベストアンサー率38% (5242/13714)
ピーク時のヒット数が180万/hだとすると、秒間500を処理させると言う事ですよね。 ここまでくると基本的にはスケールアウトさせることを検討した方がいいでしょうね。 PHPを使ってDBにデータを持っているシステムなら、DB負荷の高そうなページでアパッチベンチで秒間100を超えたらそこそこ優秀といえるので、1台のサーバで処理する限界なのかもしれません。 HTTPサーバとDBサーバを分離するだけでもディスクI/Oの面では良くなりますし、ApacheとDBでメモリの奪い合いが無くなるので少し効果があるでしょう。 Apacheの設定だけでなんとかするのであれば、KeepAliveの設定を見直し基本的にはKeepAliveを使用しないか使用してもタイムアウトを早くするといいかもしれません。
お礼
ありがとうございます! すみません、よくよく考えたら、ピーク時のhtmlは閲覧だけで、DBアクセスはしませんでした。 スケールアウトも検討しているところです。 KeepAliveの設定は今は「off」になっていました。 ピーク時は特に画像が多いので、これを「on」にして、タイムアウトを「1」とかに 設定してみるのもいいかもしれませんね。 MaxClientsの方にばかり目がいってましたので、助かりました。 「on」にした場合、例えば、ピーク時以外には画像も少なく負荷もかかっていない状況ですが、タイムアウトを短く・・・「1」くらいにしておけば問題ないですよね? サービス中に設定を変更することはできないので。^^; 実際にどうするかは不明ですが、負荷試験等でKeepAliveの設定を試してみるよう、答えてみます。 いろいろな設定があって、素人にはなかなか難しいです。 有難うございました。
補足
ちょっと追加で質問です! 極端な話ですが、 KeepAliveを「ON」、タイムアウトを「1」に設定した場合、 次のリクエストがこないうちにタイムアウトになり、切断→接続が繰り返された場合とKeepAliveが「off」の動きは「同様」という理解でいいのでしょうか? その場合、「off」の設定のときのほうが表示は速いのでしょうか? ・・・ピーク時以外のときはどうなるのかな?の懸念です。 ピークは年に2回、それ以外はそれほど負荷のかからない、画像の少ないhtmlになり、+次画面表示やDBアクセスがあります。
- t_ohta
- ベストアンサー率38% (5242/13714)
Maxclientsを増やすと言う事は、同時接続数が増えるのでCPUが処理すべき仕事が増えるためサーバの負荷は増えます。 同時接続数が足りなくて閲覧者を待たせるような状態になっているのであれば、Maxclientsを増やす事で応答速度は早くなるかもしれません。 しかし、同時接続数は足りているけどCPUが処理できないとか、ディスクI/Oがいっぱいいっぱいで追いついていないということであれば、サーバそのもののスペックをあげるとかスケールアウトさせるといった対策が必要になります。 どういった状況が発生していて、何が原因なのかを突き止める事が先だと思います。
お礼
ありがとうございます。 状況は、繁忙時の閲覧時には利用者は1時間程度、待たされることがあります。 原因はアクセス数がただただ多いからです。 phpでアプリは開発されていますが、なるべくDBアクセスが少なくなるよう、 トップ閲覧には、事前に静的なhtmlがアップロードしてあります。 ただ、画像はかなり多いですが、これはセキュリティ上、変更できません。 最初の閲覧htmlより、特定利用者はログインし、dbアクセスもあります。 これも変更はできません。 トップページの閲覧に最大1時間くらいかかることがあります。 利用者も仕方がないと納得しているのですが、少しでも早く閲覧できることを目指しています。 サーバは最新ですのでスペックは問題ないと思います。(hpのDL360 G7) よろしくお願いします。
お礼
重ね重ね、ありがとうございます。 まだまだ教えていただきたいことがありそうですが、 KeepAliveの事や、あるサイトでMaxClientsの算出方法が載っていたので それらの情報と、 最終的にはスケールアウトが無難(?)というように返事をしようと思います。 いろいろとありがとうございました。 とても勉強になりました!