More Related Content
More from oranie Narut (11)
Webサーバ勉強会02
- 4. チューニングとは 信頼の wikipedia で調べると チューニング (tuning) とは、「調律・同調する」の意味を持つ英語。 * 音楽において、楽器の音の高さを合わせること。調律。および転じて高さが合った状態のこと。 * 無線送受信機において、電波の周波数を合わせること。 * 機械に手を加え、目的とする状態に調整すること。 チューンアップ・チューンナップともいう。しばしば改造(カスタム)と同義として扱われるが、本来は「チューニング」という単語に「改造」という意味は無い。 o 自動車においてはチューニングカーを参照。 * シンクロ召喚を行うこと。 ←遊戯王カードの用語みたいです。
- 6. prefork のチューニング目的 config 等については Web サーバ勉強会 1 回 @mashan さんの資料より。 8 <IfModule prefork.c> 9 StartServers 8 10 MinSpareServers 5 11 MaxSpareServers 20 12 ServerLimit 256 13 MaxClients 256 14 MaxRequestsPerChild 4000 15 </IfModule> prefork は、あらかじめ子プロセスをいくつか起動しておいて 直ぐにリクエストに応答できるようにする方式 リクエストを受け付けるプロセス数の制御なので、主に ・スループットの向上(大量アクセスへの対応) となる。
- 7. prefork のチューニング① まずはデフォルトの意味を理解する。 8 <IfModule prefork.c> 9 StartServers 8-> サーバ起動時の子プロセス数を 8 つに設定する 10 MinSpareServers 5-> ・アイドル ( リクエストを扱っていない ) プロセスの最小個数を 5 つに設定する 11 MaxSpareServers 20-> ・アイドル ( リクエストを扱っていない ) プロセスの最大個数を 20 に設定する 12 ServerLimit 256-> 最大で子プロセスを 256 まで生成する 13 MaxClients 256-> 最大でリクエストを 256 まで同時に受け付ける 14 MaxRequestsPerChild 4000->4000 リクエストを処理したプロセスは殺す 15 </IfModule> となる。なので、単純に考えると 12 ServerLimit 256-> 最大で子プロセスを 256 まで生成する 13 MaxClients 256-> 最大でリクエストを 256 まで同時に受け付ける をいじれば受信出来るリクエスト数は多くなるから最大スループットは向上する?
- 8. prefork のチューニング② じゃあ、 12 ServerLimit 10000 13 MaxClients 10000 とかにしたら同時 1 万リクエストを 1 台のサーバで処理出来て 最強wwwwwwうはwwwwクラウドとかいらないwwwwwwwwwww -> そんな訳は無い。 プロセスを生成するにはコストが掛かる。->主にメモリ クライアントからのリクエストを正常に受信出来るか?->主にネットワークスループットなど 受信したリクエストを各プロセスが正常に処理出来るか->主に CPU は別問題。元々のサーバ性能を超えて apache の設定を行っても意味が無い。 上記みたいに 10000 とか設定すると、 10000 プロセス生成するメモリ、 10000 リクエストを受信出来る ネットワーク性能、 10000 リクエストを同時に処理出来る CPU 性能などなどが必要で、どれか欠けても狙った性能は出ない。
- 11. prefork のチューニング⑤ サーバ HW 仕様と合わせて、 OS で利用しているリソースや他のアプリ等で使用するリソース等と 含めて、残りが apache で利用出来る分と見極め逆算して考えた方が早いかも。 この辺はサーバの特性にも関わるので、内部処理の把握+経験+測定で効率の良い方法を探してくださいw 例として・・・ ① ab 等で想定しているシナリオ負荷を掛けて見る。若しくは運用している時のピークで。 ② レスポンス結果、 OS 、プロセス状況を見る。 CPU とかは問題無いけど、 apache レベルで同時リクエストを捌けていなければ次へ。 CPU とかがそもそも限界なら、むしろ同時接続数下げましょう。 安定運用大事です。 OS 落ちたら意味無いです。 ③ 1 プロセス辺りの消費メモリを見る。(平均値や中央値じゃなくて MAX 値で) ④ HW に搭載しているメモリ -(OS 等で使用しているメモリ + 他のアプリで使用しているメモリ使用量 + 本来のバッファ分と余裕という意味のバッファ分 ) =apache に割り当てても良いリソース量の目安 ⑤ apache に割り当てても良いリソース量 ÷1 プロセス辺りの消費メモリ = ServerLimit 、 MaxClients に割り当てる事が出来る数値 という形で当たり付けをして、また負荷掛ける->計測して問題が無いか、狙った性能が出るかをチェックする。