検証!安定しているのはどっち?
Apacheとlighttpdの安定性はどのくらい?
「第2回:性能検証!早いのはどっち?(http://www.thinkit.co.jp/article/119/2/)」は、Apacheとlighttpdのパフォーマンス面について、2種類のベンチマークツールを利用して、どちらのWebサーバーが速いのか検証を実施しました。その結果、リクエストの処理量でlighttpdがApacheを下回ることは無く、パフォーマンス面ではApacheと比較してlighttpdの方が優れている結果となりました。
しかしシステムとして多少パフォーマンスが良くても、安定したサービスが提供できなければ実際に運用するのは厳しいでしょう。そこで、今回はApacheとlighttpdの安定性について取り上げ、どのくらい安定して稼働することができるかを検証していきます。
何をもってして安定していると評価するか
Webサーバに限らず、新しいプロダクトを採用・導入する際には、通常そのプロダクトの実績の調査や、性能の評価を実施するでしょう。その時同時に安定性についても評価すると思います。
とはいっても、安定性の評価は難しい点がいくつかあります。理想的な方法は、さまざまな負荷をかけながら実運用に近い形で長期間稼働させ、問題なく動き続けることを確認することですが、実際にはその評価期間・要員を工面するのが難しいことも事実です。
また、その評価期間が長くなればなるほど、評価に対する信頼性は高まりますが、追求するとキリのない検証でもあります。よって連続稼働時間などのシステムの要件から評価期間の落としどころを見極めなければいけません。
今回は、短期間での簡単な検証ではありますが、Apacheおよびlighttpdのランニングテストを実施し、安定性の比較を実施しました。
安定性の比較をする上で、今回Webサーバに対して実施した検証パターンは以下の3種類です。
・平常時を想定し、低負荷な状況を一定期間与え続ける(図1の1)。
・ピーク時を想定し、高負荷な状況を一定期間与え続ける(図1の2)。
・平常時とピーク時が繰り返されるような実運用時を想定し、低負荷な状況を一定期間与え続けた後、一時的に高負荷をかけ、その後再び低負荷な状況を作る。それを繰り返し続ける(図1の3)。
上記の検証を行った際の、評価のポイントは以下の3点となります。
・問題なく稼働し続けているか。サービスが一時的に停止した形跡などが無いか。
・リソースの状態に問題はないか。メモリリークなどは起きていないか。
・Webサーバ側で想定外のエラーなどが発生していないか。Webサーバ外に影響している部分は無いか。
問題なく動き続けることが安定性を語る上で最も大事なことですが、その裏でメモリリークを起こしてプロセスが不安定になり、想定通りの性能が発揮できないケースもあります。
よって、安定して一定の性能を発揮できるか、また想定外のエラーを出さずに、正しい振る舞いをし続けているかが重要であると考えます。
次ページでは検証環境と方法について紹介します。