ApacheのMaxclientsの設定について

このQ&Aのポイント
  • ApacheのMaxclientsの設定について詳しく調べてみましょう。
  • Maxclientsを増やすことで負荷軽減が期待できるか検証してみましょう。
  • Maxclientsの設定だけでなく、他のパラメータの設定も見直す必要があります。
回答を見る
  • ベストアンサー

ApacheのMaxclientsの設定について

お客様に質問されているのですが、アドバイスをお願いいたします。 現在、WEBシステムが稼動していまして、負荷軽減の対策中です。 環境はlinuxで Apache postgresql php です。 質問された内容が   Maxclientsのデフォルトが256だが、これを○○○(例えば512?)に設定した場合、   「劇的に○○○がいい!」といえるような試験ができないか? ということです。 ストレスツールなどで試してみた(ローカル)が 実際の環境とは違うせいなのか、あまり効果が見えずデフォルトのままにしてあるそうです。 (それほど効果が出ないのであれば触らないほうがいいという判断のようです) ほんの一時期ですが、そのサイトは1時間に180万くらいのヒット数、 ページビューが10万、訪問者が7500くらいのようです。 本音では、そのときだけ多少!負荷が軽減されればいいようなのですが。。。 Maxclientsだけの設定ではなく、併せて他のパラメータの設定も必要と思いますが どのように調べたらいいのか、答えたらいいのかアドバイスしていただけないでしょうか? よろしくお願いします。

  • jg1wjz
  • お礼率91% (148/162)

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5078/13272)
回答No.4

>制限回数を超えない場合はどのような動きになるのでしょうか? 制限回数を超えない場合は、通信が途絶えてからタイムアウトで設定した時間待ってセッションを切ることになります。 >この1秒って体感的にどんな感じでしょう??? 1秒と言っても前の人の通信が終わってセッションが切断されるまでの時間です。 同時接続数が足りずに、前の人の通信が終わるのを待っている時間はそれ以上にあるでしょうから、他の設定とのバランス次第だと思います。

jg1wjz
質問者

お礼

重ね重ね、ありがとうございます。 まだまだ教えていただきたいことがありそうですが、 KeepAliveの事や、あるサイトでMaxClientsの算出方法が載っていたので それらの情報と、 最終的にはスケールアウトが無難(?)というように返事をしようと思います。 いろいろとありがとうございました。 とても勉強になりました!

その他の回答 (3)

  • t_ohta
  • ベストアンサー率38% (5078/13272)
回答No.3

> 「on」にした場合、例えば、ピーク時以外には画像も少なく負荷もかかっていない状況ですが、タイムアウトを短く・・・「1」くらいにしておけば問題ないですよね? KeepAlive On MaxKeepAliveRequests [TOPページにある画像ファイル等の数+5くらい] KeepAliveTimeout 1 とかがいいかもしれませんね。 KeepAlive は諸刃の剣で、アクセスユーザー数とサーバの処理能力のバランスが適切ならTCPセッション開始のオーバーヘッドが減り、快適にアクセス出来ます。 しかし、KeppAliveのせいでセッションを握ったままになってしまうと次の接続を受け付けられませんので、アクセスユーザー数が多い場合は接続までの待ち時間を発生させてしまう原因になります。 KeepAliveTimeout で適度にセッションを終了させるとともに、MaxKeepAliveRequests を使って一回の接続でKeepAliveしたままリクエストできる回数に制限を掛けて、セッションを切らせるといいでしょう。 MaxKeepAliveRequests にセットした制限回数を超えるとセッションを切ってくれるので、1ページで使用する HTML+画像やCSS、JavaScriptファイルの数にちょっとだけ余裕を持たせた数にセットしておくと、必要なファイルを持っていったらさっさとセッションを切ると言う事もできます。

jg1wjz
質問者

お礼

詳細な説明、ありがとうございます! ちょっと質問があるのですが、 ・・・MaxKeepAliveRequests にセットした制限回数を   超えるとセッションを切ってくれる とありますが、制限回数を超えない場合はどのような動きになるのでしょうか? といいますのは、 ピーク時は画像の数が200くらい、閑散期は1 なんていう時もありまして、 ピーク時は教えていただいた設定がかなり有効とにらんでいますが 閑散期は、同じ設定の場合最低1秒はつかみっきりでしょうか? この1秒って体感的にどんな感じでしょう???

  • t_ohta
  • ベストアンサー率38% (5078/13272)
回答No.2

ピーク時のヒット数が180万/hだとすると、秒間500を処理させると言う事ですよね。 ここまでくると基本的にはスケールアウトさせることを検討した方がいいでしょうね。 PHPを使ってDBにデータを持っているシステムなら、DB負荷の高そうなページでアパッチベンチで秒間100を超えたらそこそこ優秀といえるので、1台のサーバで処理する限界なのかもしれません。 HTTPサーバとDBサーバを分離するだけでもディスクI/Oの面では良くなりますし、ApacheとDBでメモリの奪い合いが無くなるので少し効果があるでしょう。 Apacheの設定だけでなんとかするのであれば、KeepAliveの設定を見直し基本的にはKeepAliveを使用しないか使用してもタイムアウトを早くするといいかもしれません。

jg1wjz
質問者

お礼

ありがとうございます! すみません、よくよく考えたら、ピーク時のhtmlは閲覧だけで、DBアクセスはしませんでした。 スケールアウトも検討しているところです。 KeepAliveの設定は今は「off」になっていました。 ピーク時は特に画像が多いので、これを「on」にして、タイムアウトを「1」とかに 設定してみるのもいいかもしれませんね。 MaxClientsの方にばかり目がいってましたので、助かりました。 「on」にした場合、例えば、ピーク時以外には画像も少なく負荷もかかっていない状況ですが、タイムアウトを短く・・・「1」くらいにしておけば問題ないですよね? サービス中に設定を変更することはできないので。^^; 実際にどうするかは不明ですが、負荷試験等でKeepAliveの設定を試してみるよう、答えてみます。 いろいろな設定があって、素人にはなかなか難しいです。 有難うございました。

jg1wjz
質問者

補足

ちょっと追加で質問です! 極端な話ですが、 KeepAliveを「ON」、タイムアウトを「1」に設定した場合、 次のリクエストがこないうちにタイムアウトになり、切断→接続が繰り返された場合とKeepAliveが「off」の動きは「同様」という理解でいいのでしょうか? その場合、「off」の設定のときのほうが表示は速いのでしょうか? ・・・ピーク時以外のときはどうなるのかな?の懸念です。 ピークは年に2回、それ以外はそれほど負荷のかからない、画像の少ないhtmlになり、+次画面表示やDBアクセスがあります。

  • t_ohta
  • ベストアンサー率38% (5078/13272)
回答No.1

Maxclientsを増やすと言う事は、同時接続数が増えるのでCPUが処理すべき仕事が増えるためサーバの負荷は増えます。 同時接続数が足りなくて閲覧者を待たせるような状態になっているのであれば、Maxclientsを増やす事で応答速度は早くなるかもしれません。 しかし、同時接続数は足りているけどCPUが処理できないとか、ディスクI/Oがいっぱいいっぱいで追いついていないということであれば、サーバそのもののスペックをあげるとかスケールアウトさせるといった対策が必要になります。 どういった状況が発生していて、何が原因なのかを突き止める事が先だと思います。

jg1wjz
質問者

お礼

ありがとうございます。 状況は、繁忙時の閲覧時には利用者は1時間程度、待たされることがあります。 原因はアクセス数がただただ多いからです。 phpでアプリは開発されていますが、なるべくDBアクセスが少なくなるよう、 トップ閲覧には、事前に静的なhtmlがアップロードしてあります。 ただ、画像はかなり多いですが、これはセキュリティ上、変更できません。 最初の閲覧htmlより、特定利用者はログインし、dbアクセスもあります。 これも変更はできません。 トップページの閲覧に最大1時間くらいかかることがあります。 利用者も仕方がないと納得しているのですが、少しでも早く閲覧できることを目指しています。 サーバは最新ですのでスペックは問題ないと思います。(hpのDL360 G7) よろしくお願いします。

関連するQ&A

  • Apacheのアップグレードについて

    今RedhatLinux7.1を使っています。 この前Apache+php+PostgreSQLの環境を作ったのですが、 ApacheをApache_1.3.26にアップグレードをしたいと思っています。 アップグレードするにはどのようにすればいいのですか? 前のバージョンのものは削除するのですか? また、phpやPostgreSQLはそのままでいいのですか? 卒業研究のために最近Linuxを始めたばかりでまだわからないことばかりです。 誰か教えてください。お願いします。

  • apacheの設定について

    おはようございます。kureha000と申します。  現在Apacheの設置をしているのですが、httpdをスタートさせて statusで情報を見ると「httpd dead but subsys locked」と でてしまいます。 これはどういった意味で、どのような設定を見直せば いいのでしょうか? また、windowsマシンからLinuxマシンへpingを打つと返ってくるのですが、 Linuxマシンからwindowsマシンだとなんの応答もないのです。 そのため、apacheが起動してもサーバにアクセスできないのです。 これについてもわかることがありましたら教えてください。 お願いします。  【環境】 Red Hat Linux7.1J 社内LAN apache-SSL1.3.19

  • サーブレット使用時におけるapache2のチューニング方法

    システムのバージョンアップに向けてのシステム検証中において、apache2をデフォルト設定で動作させております。 環境は、apache2.0.55 + mod_jk2 + tomcat5.5.17 + jdk5.0_10 + postgreSQL7.4.7 現行システムよりもレスポンスが重いのでチューニングの方法を、ご教授お願い致します。

  • apacheの負荷軽減について

    現在、CPUの負荷がずっと高く下げる方法はないかと検討しているのですが、どなたか設定等を教えていただけませんか。 サーバーのスペック CPU:P4 3G メモリ:2G OS:FC5 CPU負荷が平均80から100で推移しております。メモリ-は現在1Gほど使用中です。なので、メモリはもう少し使用できるかと思います。 現在、apacheの設定で必要だと思われる設定については以下の通りです。 Timeout 50 KeepAlive On MaxKeepAliveRequests 20 KeepAliveTimeout 10 <IfModule prefork.c> StartServers 8 MinSpareServers 10 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 7000 </IfModule> 設定方法などでどこか変更などのアドバイス等よろしくお願いします。

  • Apache2サーバーの構築(Ubuntu で設定するには)

    Apache2サーバーの構築(Ubuntu で設定するには) Windows 系ではIISなどはGUIで設定がでいますが Linuxではできません。  大まかな質問ですみません。 入門書がなくて困っています。   マニュアルを読もうと思ったのですが Linux 初心者が理解できるようなサイト を探して見ましたが みつかりませんでした。 本家のサイト : http://www.apache.jp/manual/ は経験者向けで 部分的なマニュアルのように思えます。 一応、参考にしたいサイト  http://d.hatena.ne.jp/pakepion/20080617/1213709258    http://alk.dip.jp/apache2-default/sv080.html     上記サイトを見ると Linuxの debian系とRhel系では 設定方法が異なること Apache の ver 1.xx 系では httpd.conf で設定していたが ver2.xx 系では  各設定ファイルにより いじくる場所が変わる。 例: apache2.conf は全体の設定 でhttpd.conf の中身は空です。 つまりダミーです。 初心者が理解できる。 Apache2.xx で Rhel系(CentOS,Fedora),Debian系(Ubuntu) などについて詳しく書かれたマニュアルはありますでしょうか? とりあえず シングルドメイン、ルートディレクトリを /var/www ではなく /usr/www にしたい。 cgi、tomcat を動かしたい。 などです。 Linux (LPIC-1 )勉強中です。 

  • RedHatLinux7.1へのapache追加インストール等

    質問が幾つかあります。(このような質問の仕方が正しいかどうかはわかりませんが・・) 1)RedHat Linux7.1で最初からapacheとPHPがインストールされている状態で、最新バージョンのapacheやPHPのtarからのバージョンアップはどうすればいいのでしょうか? (インストールされている状態で展開してコンパイルしインストールすれば上手く行きませんでした。)一度入っているものを削除するにしても依存関係があるものがあって、それが何か解らず削除することができません。 2)WEBサーバーなしでサーバーをインストールしてapache・PHP・postgresqlをインストールしたら、rpm -qでみるとインストールされていませんと表示されます。 (このときhttpdはntsysvにはあらわれません。Linuxがこれらを認識していないみたいです。よって自動起動もできません)これらをLinuxに認識させるのにはどうすればいいのですか? (なおapacheは正しく動作します) 3)apacheなどはバージョン(??)によって落ちるフォルダが違っていてbinフォルダやhttpd.confなどの場所もまちまちみたいですが(インストールのオプションによっては同じところに落とせるそうですが)それらはインストールが正しければどこにあっても問題ないのでしょうか? 4)PHPでpostgresqlをコンパイル時に指定していない状態でどこかの設定ファイルにpostgresqlの記述をしてやればコンパイルなしにPHPからpostgresqlを使用できるようになるのでしょうか? 宜しくお願いいたします。

  • apacheのプロセス数が不安定

    お世話になります。_chihiro_といいます。 apacheに関する質問です。 Linuxにapacheを入れてWebサーバーとして稼動させています。 コマンドで「pstree | grep httpd」と打ったところ、目安ではありますがhttpdプロセス数を見たところ、返ってくる結果が |-httpd---40*[httpd] |-httpd---36*[httpd] |-httpd---57*[httpd] |-httpd---88*[httpd] |-httpd---77*[httpd] |-httpd---49*[httpd] |-httpd---93*[httpd] といったように安定しません。 以前Webサーバーを管理していたときは、 |-httpd---30*[httpd] |-httpd---30*[httpd] |-httpd---30*[httpd] |-httpd---30*[httpd] と、アクセスが集中していなければ一定の数値が返ってきていたのですが、、、。 これは、Apacheの設定がまずいのか、それとも気にすることではないのか調べたのですが、なかなか答えが見つかりません。 経験上、なにか分かる方おられましたら回答よろしくお願いいたします。 -----------OS情報------------- apache-2.2.4 Redhat 7系(?) メモリ 2G -----------apacheの設定(抜粋)------------- KeepAlive On MaxKeepAliveRequests 100 StartServers 10 MinSpareServers 10 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 0

  • apacheの設定

    solaris9でapache1.3.33を使用しています。 DDNSでサーバーを公開してサーバー自体うまく起動しています。 サーバーデフォルトの(あなたの予想に反して、このページが見えているでしょうか?) と見えます。 ですがWWWルートらしきところに、index.htmを置いても反映されません。(index.htmlでも変わらず) やりたいことは簡単なWEBページを公開したいだけです。IISでは立ち上げたことがありますが、この環境だとわかりません。どう設定すればよいでしょうか? wwwルートの場所とindex.htmを有効にさせるにはどうすればよいでしょうか?

  • apacheの設定

    solaris9でapache1.3.33を使用しています。 DDNSでサーバーを公開してサーバー自体うまく起動しています。 サーバーデフォルトの(あなたの予想に反して、このページが見えているでしょうか?) と見えます。 ですがWWWルートらしきところに、index.htmを置いても反映されません。(index.htmlでも変わらず) やりたいことは簡単なWEBページを公開したいだけです。IISでは立ち上げたことがありますが、この環境だとわかりません。どう設定すればよいでしょうか? wwwルートの場所とindex.htmを有効にさせるにはどうすればよいでしょうか?

  • PostgresSQLの同時接続数

    質問させていただきます。 Apache+PHP+PostgresSQLでサーバーを運用しています。アクセス数が多くなるとApacheが停止してしまいす。そのためボトルネックの調査をしているのですが、Apacheの同時リクエスト数(MaxClients)を150、 PostgreSQLの同時接続数(MAX_CONNECTIONS)を32に設定しています。 ApacheとPostgreSQLの同時接続数はどちらを多くしたほうがよいでしょうか?