Apacheとは
Apacheとは、Apache財団というところが開発した、オープンソースWebサーバソフトウェアで、正式名称は「Apache HTTP Server」。
世界的に普及されているWebサーバで、大手から個人まで幅広く使われているWebサーバーです。私は調べるまで知りませんでした。。。
特徴としては、
1、オープンソースライセンスである(無料だから誰でも使えるよって事)
2、信頼性、安定性が高い(世界的に普及していることがこれを物語っているよね)
3、MPMによってマルチプラットフォームに対応(色々なOSに対応できるよって事)
4、モジュールを用いた機能追加(これはそのままかな)
ざっくりとこんな感じのApacheのチューニング(設定)について調べる機会があったので、備忘録として書きます。
チューニングについて
Apacheのチューニングは、パフォーマンスを向上させたり、インフラコストの最適化を行う上で重要な事のようです。
また、Apacheはプロセス駆動アーキテクチャでマルチプロセスという駆動方式で、各リクエストをプロセスに割り当てて処理を行うという特徴もあり、リクエストが大量に来た際に、プロセスが同時に起動するので、オーバーヘッドが非常に大きくなるというデメリットがあります。
しかしApacheもこのデメリットを放っておく訳なく、それらを回避する仕組みが備わっているんです。回避する仕組みこそチューニングなのです。
しかし、チューニングはその環境によって変わってくるようなので、色々な記事に乗っている設定値を鵜呑みにして設定しても意味がないという事なので、こういったパラメータがあって、なんの為にあるのか理解すれば、あとは自分の環境と照らし合わせて調節していくだけですね。
私は、色々な記事を読んで設定値を鵜呑みにしようとしている時に指摘され、理解しましたので、ここでも共有という事で書いておきます。
パラメータ
パラメータは数多く存在し、全てを網羅できないという判断から、私が調べた範囲でしか書きません。
私の解釈も混ざっているので、間違った解釈をしていましたら、ご指摘お願いいたします。
Timeout
・リクエストを受け取ってから処理完了での待ち時間
デフォルトは、バージョンにより異なる。
電波悪いとこで、サイトにアクセスした時に、接続できませんでした的な画面が表示されるまでの時間の事。というように解釈。
あとは、アクセスがめっちゃ集中してるサイトにアクセスした時とかかな。
KeepAlive
・1回のTCP接続で複数のHTTPリクエストを処理する。
デフォルトはON。
・KeepAliveTimeoutの設定。1つのクライアントが、コネクションを占有できる時間の設定。
KeepAliveTimeoutデフォルトは、バージョン2.0で15秒、バージョン2.2で5秒。
HostnameLokups
・ログファイルに記録する際に、接続元IPアドレスを逆引きする。
デフォルトはOFF。
DNSの逆引きは時間が処理に時間がかかるので、まぁ使わないのかなという印象。
※DNS逆引きに時間がかかるのは、正引き(ドメイン名からIPアドレスを問い合わせる)を想定して最適化された設計だから。
mod_deflate
・HTTPで圧縮転送を行うモジュール
適用範囲を指定して、利用する。(テキストコンテンツに適用。画像ファイルには適用しない。)
圧縮だから、小さくする事で、転送だから、送る事。それを指定する。
そのままの事書いてますが、理解する上でこのように一個一個分けて考えることは大切なのです。
MaxClients/ServerLimit
・サーバープロセス数の上限。
プロセス数と最大同時接続数は、ほぼ同じ。
例:KeepAliveTimeoutが15秒で、MaxClientsが256、その環境に300人接続した場合、256人が最初に処理され、44人は、サーバーのリソースに余裕があったとしても、15秒待たされる事になる。
StartServers
・Apache起動時の子プロセス数
Apache起動時にまずはここで設定された数の子プロセスを起動する。
MinSpareServers
・待機時の最小子プロセス数。
子プロセスがMinSpareServersより少なくなったら、この値まで子プロセスを上げる。
MaxSpareServers
・待機時の最大子プロセス数
子プロセスがMaxSpareServersより大きくなったら、この値まで子プロセスを下げる。
まとめ
自分の環境にあったチューニングをする。ネットにある、設定値を鵜呑みにしない。
私ももう少し勉強します。