Pocket

「ApacheってCentOSだとなんでパッケージ名がhttpdなのよ。。
apacheでええやん。Ubuntuみたいに。」
というわけでまったく関係ない話から入りましたが、
今回はApacheのチューニングについて超分かりやすくブログします。


■チューニングしないとどうなるの?

映画「ソーシャル・ネットワーク」でもマークさんはこんなこと言ってます。
「新しいサーバ契約した?apacheの負荷テストしたいんだ。」
Facebookとか大規模サービスの場合、大量のアクセスが来ます。
チューニングしないとswapが跳ね上がったりしてサーバが固まったり、
サイトにアクセスできないとかいろいろ起こります。
まあスケールアップとかスケールアウトなどいろいろ方法がありますが、
今回は置いときましょう。


■Apacheの仕組みについて

親プロセスを1つ持ち、クライアントからリクエストが来ると
自分自身をコピーして子プロセスを起動する。
実際の通信は子プロセスが受け持ち、通信している数だけ子プロセスが起動する。
簡単に言うと、自分自身を分身する感じ(影分身的な)。でも限界がある。。。


■MPMについて

MPM(Multi Processing Module)

環境やOSによる機能や実装の違いをモジュール化し、
利用する環境に対応できるようにした仕組み。
ApacheHTTPサーバ2.0から採用。

代表的なのが・・・?


■prefork

超定番ですね。PHP使うならこれが推奨される。

クライアントからリクエストを受けた後に子プロセスを起動すると
完了までに待ち時間ができて通信のパフォーマンスが低下するため、
あらかじめ子プロセスをいくつか起動させておく。

prefork

・デメリット

クライアント数が多くなると子プロセスの数も増えるので負荷がかかり、
大量のメモリや高速なCPUが必要になる→スケールアップ的な

要するに重いという・・・

・その他のMPMは?

worker,eventなどなど

■性能パラメータを設定する

まずはMPMどんなの使っているのか確認しましょう。

こんなのがあるはず。
では見ていきましょう。(デフォルト高すぎ!)

■StartServers

起動時に生成される子プロセスの数。
子プロセス数は負荷に応じて動的に変化する。
→意味ないやん

動かす数に設定すればとりあえずいいかと。


■MinSpareServers

アイドル状態にいる子サーバプロセスの最小(希望)個数。
→影分身頼んだぞ!がんばれ!

アイドル状態の子プロセスが足りなければ、
最高で1プロセス/秒のペースで新規に子プロセスを生成する。


■MaxSpareServers

アイドル状態にいる子プロセスの最大(希望)個数。
→影分身頑張ったな!

アイドル状態の子プロセスの数がこの値をこえた時は子プロセスを殺せええええ!!!

数値は大きいとアカンかも。


■MaxClients

応答される同時リクエスト数(子プロセスの最大数)


■ServerLimit

MaxClientsに指定可能な値の上限。
→MaxClientsより大きい数でOK

あんまり大きいと不安定になる・・・


■MaxRequestsPerChild

個々の子プロセスが扱うことのできるリクエストの総数。
→子プロセスが起動してからこの数だけリクエストを捌くと・・・・

死亡

無制限(0)にするとforkされる回数がダイブ減る。


■ まとめ

子プロセス確認はpsコマンドですね。
次回はチューニング算出方法とかブログしたいと思います。
(・∀・)つ bye

参考資料:http://httpd.apache.org/docs/2.2/ja/mod/prefork.html

Pocket

カテゴリー: ApacheBlogCentOSUbuntu

adachin

1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください