※タイトルは、一般的に MaxClients が意味のないパラメータである、ということを意味しませんし、主張しません!!!
Apache をチューニングして、ベンチマーク・レスポンスを向上させたいと思っています。
ウェブ開発者のための、1時間でできるLAMP環境構築術(CentOS編) – さくらインターネット創業日記を参考に、MaxClients を 256(初期値)、40、20、1、と変えてみました。でもテストにかかった総時間、失敗したリクエスト、1秒あたりに処理したリクエスト数、に大きな変化は見られませんでした。次の表はMaxClients を 256 に設定したときの表です。他の設定値のときも、ほぼ同じような結果でした。
MaxClients を 256 に設定した場合
No | -n | -c | Time takenfortests(seconds) | Failedrequests | Requests per second[#/sec] (mean) |
1 | 100 | 1 | 227.527 | 7 | 0.44 |
2 | 100 | 10 | 238.069 | 5 | 0.42 |
3 | 100 | 20 | 239.867 | 1 | 0.42 |
4 | 100 | 30 | 225.257 | 6 | 0.44 |
5 | 100 | 40 | 222.697 | 2 | 0.45 |
6 | 100 | 50 | 219.856 | 5 | 0.45 |
7 | 100 | 60 | 220.74 | 5 | 0.45 |
8 | 100 | 70 | 221.206 | 4 | 0.45 |
9 | 100 | 80 | 220.873 | 5 | 0.45 |
10 | 100 | 90 | 217.7 | 2 | 0.46 |
11 | 100 | 100 | 233.237 | 1 | 0.43 |
12 | 200 | 200 | ※1 | – | – |
13 | 200 | 1 | 458.476 | 8 | 0.44 |
14 | 500 | 1 | 1147.09 | 25 | 0.44 |
15 | 1000 | 1 | 2304.785 | 39 | 0.43 |
※1 apr_socket_recv: 既存の接続はリモート ホストに強制的に切断されました。 (730054)
設定や測定の考え方や、やり方が悪いのかもしれません。また、サーバのスペックが低くてどのように設定しても同じ結果となっているのかもしれません。
それから失敗したリクエスト数、つまり Failed requests が発生しているので、サーバ処理能力の限界を超えているような気がします。
さらに同時接続数(オプションの -c )を 200 にすると、「apr_socket_recv: 既存の接続はリモート ホストに強制的に切断されました。 (730054)」となって測定ができない。これもどういうことなのかよくわかりません。
わからないので、いろいろ調べました。
そうしたら、こんなサイトに出会い、
続いて ab のオプションについてもう一回調べてみようとググってみましたら、次のページにたどり着き、それを読んでそもそも自分は、Apache の性能を上げたいのに見当違いのことをやっているかもしれないと思い当たりました。
httpd.conf で Apache のプロセスを制御する個所のチューニングについてこのように記述しておいででした。
この数値はそれぞれ関連しあうのでどれかひとつを増減しても効果は現れにくい。
アクセスの現状を把握した上で全体的な調整を持つ必要がある。
このページによると、まずそもそもの「Apacheのチューニング ベンチマーク・レスポンス向上」の考え方として、
チューニングの基本的な考え方は、処理が増えればパフォーマンスは落ちるということ。
必要のない機能はどんどん落とすに限ります。
とありました。言われてみればなるほどと思いますし、どんなものにも通用するような当たり前な考え方ですね。
しかし初心者だと、当たり前のこと、は迷走の果てにできなくなっていることが非常にしばしばあります。
今のわたくしがそうですね。
今後の方針
ということで、Apache に「必要のない機能はどんどん落とす」方針で、設定の見直しをやり直したいと思います。
おわりに、Apache の設定は、次のように初期の値に戻しました。
Apache 設定を編集します。
[root@oki2a24 themes]# vim /etc/httpd/conf/httpd.conf
次のようにしました。
# prefork MPM # StartServers: number of server processes to start # MinSpareServers: minimum number of server processes which are kept spare # MaxSpareServers: maximum number of server processes which are kept spare # ServerLimit: maximum value for MaxClients for the lifetime of the server # MaxClients: maximum number of server processes allowed to start # MaxRequestsPerChild: maximum number of requests a server process serves <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule>
構文チェックをし、Apache を再起動しました。
apachectl configtest /etc/rc.d/init.d/httpd restart