apacheの負荷軽減方法と設定について

このQ&Aのポイント
  • 現在、CPUの負荷が高くなっており、軽減方法を検討しています。
  • 使用しているサーバーのスペックやapacheの設定について詳細を教えてください。
  • また、負荷軽減のための設定方法やアドバイスをお願いします。
回答を見る
  • ベストアンサー

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> 設定方法などでどこか変更などのアドバイス等よろしくお願いします。

  • hana43
  • お礼率49% (105/212)

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

  • ベストアンサー
  • kudo_yu
  • ベストアンサー率27% (33/118)
回答No.2

参照先を見ていただければわかると思います。 あとは動かしているCGIとかによります。 例えばpukiwikiなどはCPUを消費しやすいです。

参考URL:
http://tech.bayashi.net/svr/doc/apache/tune.html
hana43
質問者

お礼

ありがとうございます。 教えていただいたURLを見て、テストしてみながら負荷を下げるように変更してみたいと思います。 ありがとうございました。

その他の回答 (1)

  • kudo_yu
  • ベストアンサー率27% (33/118)
回答No.1

どの程度のアクセスがあるのでしょうか。 それによっては設定が仇になるかもしれませんが StartServers 8 MinSpareServers 10 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 7000 これらの数値を下げれば負荷は減るかと思います。

hana43
質問者

お礼

ありがとうございます。 アクセス数は1日に5万件ほどです。 これらの数値を下げるとは全ての数値を下げるということでしょうか? それともMaxClients,MaxRequestsPerChildについてということでしょうか?

関連するQ&A

  • アクセスが多い場合のApacheの設定について?

    アクセスが多いサイトを運用しておりますが、Topコマンドで見ると、すぐにCPUが99%になってしまます。 ロードアベレージは、1前後です。 この場合、どの様にApacheを設定すべきでしょうか? 要するに、CPU値を安定させたいのですが。 今、Apache2を入れおりまして、以下の様になっております。 <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 200 MaxRequestsPerChild 100 </IfModule> # worker MPM # MaxRequestsPerChild: maximum number of requests a server process serves <IfModule mpm_worker_module> StartServers 2 MaxClients 200 MinSpareThreads 25 <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 200 MaxRequestsPerChild 100 </IfModule> # worker MPM # MaxRequestsPerChild: maximum number of requests a server process serves <IfModule mpm_worker_module> StartServers 2 MaxClients 200 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 100 <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 200 MaxRequestsPerChild 100 </IfModule> MaxKeepAliveRequest は、300で、Timeoutは30です。 修正すべき箇所はございますか?

  • ApacheのMaxSpareServersの設定について。

    ApacheのMaxSpareServersの設定について。 WebサーバーにApacheを使っており、その設定について質問させていただきます。 起動プロセスの基本的な設定の部分についてですが、 StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 と StartServers 8 MinSpareServers 5 MaxSpareServers 256 ServerLimit 256 MaxClients 256 にした場合、挙動の違いやメモリの消費率などはどう変わってくるのでしょうか? 設定1と設定2について、その挙動の違いとメリット、デメリットを教えて下さい。 必要なプロセス数は250程度とし、MaxClientsの設定値となる256程度まで使いきると仮定します。 よろしくお願いします。

  • httpdのプロセスが徐々に増大し、数日でダウンするのですが

    FreeBSD5.5+Apache2.0.61+PHP5.1.8+MySQL4.1.22にてWEBサービスを稼動させています。 HPへのアクセスはそれほど多くないのですが、httpdのプロセス数がゆっくりとしたペースで徐々に増加し、数日でApacheが応答しなくなるという現象に悩んでおります。 47562 ?? S 0:10.61 /usr/local/sbin/httpd -k start 47585 ?? S 0:12.06 /usr/local/sbin/httpd -k start 47586 ?? S 0:09.33 /usr/local/sbin/httpd -k start . . このようなプロセスが増えていき、MaxClientを超えるあたりで応答しなくなります。 Server-statusで確認すると、どうやら、Scoreboard Key が W(Sending Reply)のままキープされて、残ってしまっているプロセスがあるような気がします。 31 requests currently being processed, 9 idle workers WKKWWKWWKWKKKWKKK_WWW_KWWK__KW_K_W__.WKW._...................... ................................................................ マニュアル等を参照しながらhttpd.confの設定を色々といじりましたが、全く変化がありません。以下、設定の内容です。 Timeout 60(300に変えて変化なし) KeepAlive On(Offに変えて変化なし) MaxKeepAliveRequests 300 KeepAliveTimeout 15 <IfModule prefork.c> StartServers 10 MinSpareServers 10 MaxSpareServers 20 MaxClients 200(600に変えて変化なし) MaxRequestsPerChild 4000(0に変えて変化なし) </IfModule> CPU稼働率も10%いかない程度ですし、メモリのSWAPも起きていないので、高負荷によるダウンではないと考えております。 私としては、開放されないプロセスをなんらかの方法で検出し、プロセスを停止させればよいのではないかと考えていますが、具体的にどうやったらそれが実現できるのか、方法が分かりません。 どなたかご存知の方がいらっしゃればお教えください。 また、これ以外で良い方法をご存知であればぜひお願いいたします。 どうぞ宜しくお願いいたします。

  • 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

  • アクセス障害でこまってます。

    サイトを運用しているのですが、アクセスが集中してしまい、 アクセスができない状態になりました。 アクセス数は"200アクセス/分"でこのような状態になってしまいました。 Apache のエラーログを見る限り、同時リクエスト数がMaxClientsに達したとなっていました。 また、/var/log/message を見ると メモリを使い切ったとエラーがでてきました。 httpd.conf の抜粋 <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule> この場合、上記設定で変更すべき箇所があれば、教えて下さい。 また、ほかに設定すべきところや、確認すべきところがあれば教えて下さい。 以下のようなログが出力されました。 Apacheのエラーログ [Tue Dec 09 21:21:35 2008] [error] server reached MaxClients setting, consider raising the MaxClients setting /var/log/message Dec 9 21:47:16 www kernel: oom-killer: gfp_mask=0xd0 ... Dec 9 21:53:16 www kernel: Free pages: 16232kB (112kB HighMem) ... Dec 9 21:59:22 www kernel: Free swap: 0kB Dec 9 21:59:22 www kernel: 262064 pages of RAM Dec 9 21:59:22 www kernel: 32688 pages of HIGHMEM Dec 9 21:59:22 www kernel: 3505 reserved pages Dec 9 21:59:22 www kernel: 125465 pages shared Dec 9 21:59:22 www kernel: 481 pages swap cached Dec 9 21:59:22 www kernel: Out of Memory: Killed process 25124 (httpd). サーバースペックが以下になっています。 CPU : Intel(R) Xeon(TM) CPU @ 1.66GHz Memory: 1GB SWAP: 1GB Linux version 2.6.9-78.0.1.ELsmp Apache 2.2.8 (prefork) PHP 5.2.6 何かヒントでもあれば教えて下さい。 お願いします。

  • Apacheと連携した場合のTomcat、server.xml設定

    現在Apache、Tomcatをmod_jk2で連携しwebサーバを構築しております。 そこでチューニングについて、色々と調べているのですが、 Apache単体のチューニングサイトは良く見かけるのですが、 Tomcatと連携した場合のチューニング例(質問内容が解決するような)がなかなか見つからず困っております。 以下の問題に参考になるサイト、あるいわアドバイスがあればご教授お願い致します。 ■以下環境設定等 ※Apache設定 バージョン2.0.59 httpd.conf設定 ****************************************** Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15 <IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 250 MaxRequestsPerChild 0 </IfModule> ******************************************* ※Tomcat設定 バージョン5.0.28 server.xml設定 ******************************************* <!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 --> <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" /> <!-- Note : To disable connection timeouts, set connectionTimeout value to 0 --> <!-- Note : To use gzip compression you could set the following properties : compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml" --> <!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --> <!-- <Connector port="8443" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" debug="0" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> --> <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 --> <Connector port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" /> ******************************************* ■疑問点 1.Apache、Tomcatを連携する際の使用ポートは8009となっているが、 Tomcat側の8009設定には情報が載っていなのは正常なのか。 ApacheとTomcatのコネクション設定を最適化したいと思い いろいろ検証しているのですが、Apacheのhttpd.confの設定を見てる気がしてならないです…。。 2.いろんなサイトを見ているとApacheと連携した際は、 Tomcatの8080ポートを使わない設定にしている所が非常に多いです。 8080ポートを使わないからセキュリティ上消すのは分かるのですが、 何か他にも特別な理由等あるのでしょうか? 例えば、80ポート、8080ポートと両方で受け付けていると動作がおかしくなるや、メモリを余計に食うなど。 以上、長くなりましたが些細な点でもいいのですので、ご教授お願い致します。

  • ApacheのKeepAliveについて

    JMeterを使用して負荷テストを行っているのですが KeepAlive On MaxKeepAliveRequests 10 KeepAliveTimeout 2 でテストを行い負荷が掛かりだすとJMeterの結果ツリーに以下エラーが発生します。 org.apache.http.NoHttpResponseException: サーバーアドレス failed to respond Apacheのerror_log上には何もメッセージは表示されていない状態です。 mpm_event_moduleの設定変更やwww.confの設定変更を行っても特に状況は改善せず以下urlを参考にKeepAlive offに設定変更を行うとエラーは発生しなくなりました。 ttps://www.linkedin.com/pulse/apache-jmeter-basics-common-errors-issues-best-practices-prasad KeepAlive offの状態でもレスポンス等、特に問題を感じないのですが何故エラーが発生したのか理解出来ないので質問しました。 以下環境です。 ESXi上の仮想サーバーで実行しています。 CPU 4Core MEM 8GB Apache/2.4.37 PHP 7.4.33 OPcache v7.4.33 PostgreSQL 14.6

  • Apache(win32)での子プロセスについて

    PHPとは関係ないかもしれませんが、 適切なカテゴリーがなかったため、こちらに投稿しました。 現在、 Windows Server 2003 + Apache2.058 + php5.21  という環境でWEBシステムを開発していますが、 アクセスが増えてくるとApacheプロセスの使用メモリーが増大して メモリリークが発生してしまいます。 そこで、MaxRequestsPerChild を設定しますと、 リクエスト数でプロセスを再生成しますのでメモリは安定しますが、 再生成時にアクセスがあった場合に、不安定な動きをします。 (Terminating 17 threads that failed to exit.というerrorログを出力してApacheが動かなくる) そこで、お聞きしたいことが2点あります。 (1)アクセスが増えると使用メモリーは増大するものなのでしょうか? (2)MaxRequestsPerChildを設定した場合、子プロセス再生成時にアクセスがあった場合は、不安定になるものでしょうか? ご回答、対応策をご存知でしたら 教えていただけないでしょうか。よろしくお願いします。

    • 締切済み
    • PHP
  • ApacheのMaxclientsの設定について

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

  • Apache2.4 event_mpm設定について

    CentOS6.4にたにApache2.4をインストールし、event_mpmを使用しようと考えています。 Apache2.4のインストールまでは無事に終了しました。 次に、event_mpmについて下記を参照しながら設定をしようとしたのですが、設定ファイルが見当たりません。 http://blog.matsumoto-r.jp/?p=2996 デフォルト値 StartServers 3 MinSpareThreads 75 MaxSpareThreads 250 ThreadsPerChild 25 MaxRequestWorkers 400 MaxConnectionsPerChild 0 find で探しても出てきません。 Apache2.4でevent_mpmの設定ファイルはどこにあるのかご教授願います。 宜しくお願い致します。