ApacheのWorkerってなんだっけ?
最近Apacheの設定をいじる機会があったので備忘録用として記載する
ちなみにWorkerを調整した理由は、
- フロントエンドからたくさんのリクエストがとんできてサーバー側でさばききれなくなった。
- さばききれなくなったことで、サーバー側の処理がつまってしまったので、リクエストがさらにさばけなくなった。
apacheのworkerのデフォルト設定
<IfModule worker.c> StartServers 2 ServerLimit 3 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule>
- StartServers: 起動時に生成される子サーバプロセスの数
- ServerLimit: 設定可能なサーバプロセス数の上限
- MaxClients: リクエストに応答するために作成されるスレッドの最大個数
- MinSpareThreads: アイドルスレッド数の最小個数
- MaxSpareThreads: アイドルスレッド数の最大個数
- ThreadsPerChild: 子プロセスそれぞれに生成されるスレッド数の上限
- MaxRequestsPerChild: 個々の子サーバが稼働中に扱うリクエスト数の上限
なにを変更するか?
色々調べたり教えてもらった結果
- レスポンスがきすぎた場合 、StartServers、(Min|Max)SpareServers, MaxClientsを小さくして、サーバー側にくるレスポンスを絞る
と効果がでた
また下記のページが色々役にたったので、この内容を勉強してまた書く
参考ページにしたページ
プロのサーバ管理者がApacheのStartServers, (Min|Max)SpareServers, MaxClientsを同じにする理由 - blog.nomadscafe.jp