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

mpm_common - Apache HTTP サーバ