検証環境と検証方法

検証環境と検証方法

 それでは、今回のWebサーバ安定性を比較する検証内容について説明します。

 今回の検証にて利用した環境は、「第2回:性能検証!早いのはどっち?(http://www.thinkit.co.jp/article/119/2/)」の性能試験を実施した環境と同様です。サーバ機器およびクライアント機器を1台ずつ準備し、サーバ機器にてWebサーバを稼働させた状態で、クライアント機器から負荷を調節しながら複数のリクエストを発行し、その際のWebサーバの挙動を確認します。

 これらの環境の詳細については「第2回:性能検証!早いのはどっち?(http://www.thinkit.co.jp/article/119/2/)」の環境の説明をご参照ください。

 また、サーバサイドで稼働させたWebサーバのプロダクト、およびクライアントサイドで稼働させたリクエストを発行するツールを紹介します。

 比較対象とするWebサーバは以下の通りです。

・Apache 2.2.9(mpm:prefork)
・Apache 2.2.9(mpm:worker)
・lighttpd 1.4.19

 リクエストを発行するツールはab(Apache Bench)です。ただし、abだけでは、今回の検証内容を実施するだけのオプションが無いので、足りない部分についてはシェルスクリプト(bash)で実装しました。

 なお、使用した機器やツール、および対象とするWebサーバのプロダクトとバージョンは「第2回:性能検証!早いのはどっち?(http://www.thinkit.co.jp/article/119/2/)」で使ったものと同一ですので、それらのツールや設定の詳細についても、第2回の環境の説明を参照してください。

 次に今回の検証内容についてですが、前ページで紹介した検証ポイントをもとに以下の3パターンの検証を実施しました。

 検証1として「低負荷な状況」を想定し、Webサーバに対して、3~5秒おきに3~10リクエスト発行する状況を、24時間継続して実施しました。

 検証2として「高負荷な状況」を想定し、Webサーバに対して、同時接続数100にて、絶えずリクエストを発行する状況を、8時間継続して実施しました。

 検証3として「低負荷な状況と高負荷な状況が繰り返しおとずれる実運用」を想定し、Webサーバに対して、3~5秒おきに3~10リクエスト発行する状況を継続させつつ、30分ごとに2~3分ほど同時接続数50~100の高負荷な状況を作りました。この状況を24時間継続して実施しました。

検証結果から安定性を比較する

 検証結果は図2のようになりました。

 3パターンの検証に対して、リクエストに対して正常にレスポンスが返せたか、サーバのエラーログに異常は見られないか、メモリリークが発生していないかを確認しました。また、検証終了直後のメモリ使用量についても確認し、検証3については、検証中の最大メモリ使用量も確認し、各Webサーバがどのくらいのリソースを消費しているのかも確認しました。

 まず検証1の「低負荷な状況」を想定した環境での結果を紹介します。Apache(prefork)、Apache(worker)、lighttpdともに、発行された全リクエストに対して、正常にレスポンスを返すことができていました(Failed requestsはすべて0でした)。Webサーバ側のエラーログやメモリリークについても異常は見られず、すべてのWebサーバで正常に稼働していたと言えます。

 大きな違いが見られたのは、サーバ側でのWebサーバプロセスのメモリ使用量です。図2を見ていただければ分かるとおり、各Webサーバの設定がデフォルトのままというのもありますが、起動後のメモリ使用量からランニングテスト後のメモリ使用量まで、Apacheとlighttpdには大きな差がありました。

 続いて検証2の「高負荷な状況」を想定した環境での結果も、ほぼ検証1と同じ結果となっています。高負荷な状況が続いても、Apacheやlighttpdは共に、ハングアップすることなく正常に稼働しており異常は見られませんでした。

 検証3の「低負荷な状況と高負荷な状況が繰り返しおとずれる実運用」を想定した環境での結果もほぼ検証1と同じ結果となっています。

 ピーク時想定の大きな負荷をかけた場合、図2の「検証3実施中の最大メモリ使用量」に示す通り、Apacheはメモリ使用量が大きくなりました。これはApacheは子プロセスに処理を委譲し負荷に応じてプロセスを生成するためですが、通常時想定の負荷量になった時は、きちんと子プロセスが減少し、メモリが解放されていることが確認できました。

 lighttpdについては、負荷量にかかわらず、一貫して1プロセスがすべてを処理していたため、メモリ使用量についてはそれほど変動がありませんでした。

 安定性について、図2に示す今回の3パターンの検証結果からは、Apacheとlighttpdは共に安定して稼働しており、問題は見られませんでした。

 なお、小さなサイズのファイル配信だったせいか、メモリの使用量も共に大きくはなりませんでしたが、lighttpdの方がApacheよりメモリ使用量が小さいといった結果になりました。

 ただし、これについては、利用状況および設定によって、大きく変動する可能性があることに注意してください。

 では、最後にまとめとして本連載の比較内容をまとめてみましょう。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30