ITインフラ技術の実験室ITインフラ技術の実験室Linuxを中心に、仮想化やネットワーク、Windowsまで、ITインフラ技術に関するノウハウを幅広く紹介します。Flash)はじめにApache2.2の基本設定、バーチャルホスト設定、ログ設定等はApache2.2の設定にまとめています。Maxclients以外のパラメータ(StartServers、MinSpareServers、MaxSpareServers、MaxRequestsPerChild)についてはApache2.2のパフォーマンスチューニング(その1)にまとめています。MaxclientsについてはApache2.2のパフォーマンスチューニング(その2)にまとめています。280が本当に正しいのかをabコマンドで確かめたいと思います。通常時のメモリ使用量について負荷をかける前に使用可能メモリ量を調べます。メモリについては以下のサイトを参考にしました。http://www.atmarkit.co.jp/flinux/rensai/tantei01/bangai01c.html以下にポイントを抜粋します。Activeはページキャッシュや無名ページのうち、最近利用したり、まだストレージとの同期が取れていない「捨てられない」ページです。Inactiveは、同じくページキャッシュや無名ページのうち、最後にアクセスされてからある程度時間がたち、ストレージとの同期も完了していて、すぐに捨てられるページです。MemFreeは何の用途にも使っていない物理メモリ量です。よって、/proc/meminfoの出力でいうところのMemFreeとInactiveを足すことで確実に利用可能なメモリ量を算出することができます。当サーバで状態を確認してみます。kBMemFreeが469M、Inactiveが244Mなので、利用可能なメモリ量は約700Mとなります。Bench)コマンドを使用し、負荷試験を実施します。abコマンドの詳細についてはhttp://www.atmarkit.co.jp/flinux/rensai/apache15/apache15b.htmlを参照して頂きたいのですが、以下に簡単に使い方を引用します。URLのように、オプションとテストを実行するURLを指定する。最初は、別端末(IAサーバ、ホスト名はlabo-2)から試験端末(Openblocks600)に対して、同時接続50アクセスを4回繰り返すことにします。MaxClientsは50で実施します。request)先ほどのサイトからポイントを引用します。requests)abで発生させたリクエストがすべて成功していればいいが、一部が失敗するようならWebサーバの処理が追い付いていない。これは、特にプログラムを実行してページを生成する場合に起こりやすく、同時接続数の限界を超えていると考えるべきだろう。second)Webサーバのベンチマークで、最も重視されるのがこの項目である。CPUのMIPSやデータベースのTPCと同じく、1秒間にどれだけ処理できたかが重要な数値になる。パラメータやプログラムを修正したりしてその効果を測る際にも、この項目の数値がどれだけ改善するか(数値が大きくなるか)で評価を行う。second)は3.07ということになります。CMSで動的生成するサイトのため低い数字(3.07)になっていますが、NGまではいたっていないということが分かります。その際の使用可能メモリ量の変化は以下の通りでした。kB→使用可能メモリ量(MemFree+Inactive)=約600Mプロセス数も確認しました。start...長いので割愛しますが、50行ありました。Maxclientsで設定した50プロセスに制限されていることが分かります。この結果から計算すると、50プロセスを生成するのに100M使用したため、1プロセスあたりのメモリ使用量は、100M/50プロセス=2Mと計算できます。先に計算した結果が2.5Mぐらいでしたので、おおよそ同じぐらいです。http://www.infra.jp/)の負荷をかけてみたところ、HTTPサーバ側で以下のログが出ました。次は、別端末(IAサーバ、ホスト名はlabo-2)から試験端末(Openblocks600)に対して、同時接続100アクセスを4回繰り返すことにします。MaxClientsは100で実施します。requestsより)が1なので、処理能力ぎりぎりのようです。先ほど同様、負荷試験時の使用可能メモリ量の変化も見ました。kB→使用可能メモリ量(MemFree+Inactive)=約460M230M消費しています。=50の時と同様に計算すると、1プロセスあたりのメモリ使用量は230M/100プロセス=2.3Mです。先に計算した結果の2.5Mと同じぐらいです。次は、別端末(IAサーバ、ホスト名はlabo-2)から試験端末(Openblocks600)に対して、同時接続150アクセスを4回繰り返すことにします。MaxClientsは150で実施します。requests)が285なので、処理能力オーバーのようです。second)は4.62で、溢れた分、処理されたリクエスト数も増加してみます。その際の使用可能メモリ量の変化も見ました。requestsがかなり出ているので、上記の値(380M)は参考になりません。先に確かめたとおり、メモリだけ考えるのであればMaxclients=同時接続数=280まではいけますが、先にCPUの方がボトルネックとなってしまっているようです。以上の実験より、Maxclients=100ぐらいが適切な値と思われます。読んでいたら、ディスクキャッシュを強制的に開放するコマンドが載っていたので紹介します。ディスクに反映されていないデータ等も消えてしまうので商用では危険なコマンドですね。kB使用可能なメモリ量が500M→900Mまで増えました。コメントをキャンセルメールアドレスが公開されることはありません。