勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

Apacheのprefork設定とKeepAlive設定でサーバダウンを防ぐ方法

   2024/02/22  サーバー

WordPressを設置しているサーバーが、ここのところ連日でピークタイム時にダウンしていた。ちょっと前からPVが大幅に増えていたのでその影響だと考えられ、apacheの設定で対応できるんじゃないかと思った。以下に対応内容と調べたことのメモ。

 

httpd.confの書き換え

httpd.confのpreforkとKeepAlive設定を以下の通り変更することで改善された。

#preforkの値を以下に変更
<IfModule prefork.c>
StartServers      50
MinSpareServers   50
MaxSpareServers   50
ServerLimit       50
MaxClients        50
MaxRequestsPerChild  50
</IfModule>

#OnからOffに変更
KeepAlive Off

 

prefork設定

preforkの値はMaxRequestsPerChild以外、同じにするのが良いらしい。同じ値するとして、その値を求めるには「サーバーのメモリ量 > httpd1つあたりの値 * MaxClientsの値 + 他プロセスの値」にするとのこと。

http1つあたりが大体20~30MBぐらいなので、最初は余裕を見て30MBとする。他プロセスについてはわからないけど、とりあえずは4分の1にあたる500MB残すとなるとMaxClientsは50程度になるかと。

この設定だけで様子を見たところ、Googleアナリティクスにあるリアルタイムのアクティブユーザー数で200人ほどまでは、ロードアベレージが2前後で耐えられていた。ただ、200人を少し超えたところでロードアベレージが4ほどまで上がってきた。

 

KeepAlive設定

ピークタイム以外でKeepAliveをOffにしてみたところ、体感だけどページの表示速度が遅くなったように感じられた。なので、KeepAliveはOnのままKeepAliveTimeoutを8から2に減らし、prefork設定をした上で様子を見たけど上記の通りロードアベレージが4まで上がった。

数分待ってみたがロードアベレージが下がらなかったので、KeepAliveをOffにしたところ1~2あたりまで下がった。

 

参考

http://blog.nomadscafe.jp/2010/09/apachestartservers-minmaxspareservers-maxclients.html

http://blog.nikuniku.me/entry/%3Fp%3D679_1

https://qiita.com/kou/items/acb3dcf1dcb428d7a3ec

 - サーバー

  関連記事

ムームードメインで取得したドメインをシン・クラウド for Freeに割り当てHTTPS接続する方法
ムームードメインで取得したドメインをシン・クラウド for Freeに割り当てHTTPS接続する方法

ムームードメインで取得したドメインをシン・クラウド for Freeに割り当てた ...

特定ディレクトリ以下のBasic認証を無効化する方法
特定ディレクトリ以下のBasic認証を無効化する方法

Basic認証を設定しているサイトがあり、そちらを解除したかった。通常の場合だと ...

VirtualHostを設定しIPアドレスでもアクセスしたい
VirtualHostを設定しIPアドレスでもアクセスしたい

apacheでVirtualHostを設定しつつ、IPアドレスでもアクセスしたか ...

サーバに置いてある大量のファイルをダウンロード・アップロードする際に時短する方法
サーバに置いてある大量のファイルをダウンロード・アップロードする際に時短する方法

WordPressのデータなど、大量のファイルをダウンロード・アップロードする場 ...

AlmaLinuxでディレクトリのツリー構造を表示させる方法
AlmaLinuxでディレクトリのツリー構造を表示させる方法

システムのディレクトリ構造を説明する際に「└」「├」のような記号を用いて手動で書 ...