nginxとapacheはどちらを使うべきか?2

昨今のハードウェア事情として、仮想サーバーを利用するというシチュエーションが増えています。
VT(バーチャライゼーション・テクノロジー)によりCPUによる仮想化機能の提供で、昔のフルエミュレートの仮想PCと比べると随分マシになったみたいです。
仮想化技術により実装は異なりますが、大抵さくらVPSでお世話になってるKVM+QUEMの構成なんじゃないですかね?
その前提で昨日の話のおさらいをしましょう。
KVMはKernel Based Virtual Machineという名前のようにLinux Kernelに組み込まれた仮想化機能です。
ホストOSのコア機能として実装されてる仮想化技術ですので、VMはホストから見れば1プロセスにすぎません。
昨日の話だとプロセス単位にCPUリソースを割り当てるのがOSの機能でした。
じゃあCPUリソースが割り当てられたタイミングで初めて動く単なるエミュレータかよ?
と思っちゃいそうですが、違う技術だからカーネルベースとか偉そうに名乗ってるんですね。
私が使ってるさくらVPSだと2コアなんですが、これは2コアの仮想CPUです。
便宜上VCPU1とVCPU2という名前にします。
VCPU1は物理CPUの1番コア、VCPU2は物理CPUの2番コアという形で割り当てるので、ホストOSの基本機能のタスク管理の時点で仮想OSを意識したリソース割り当てが実施されます。
VMは物理サーバーと比べてオモチャなのは事実ですが、技術の進歩でそこそこ使えるオモチャになってるのは間違いない訳です。

で、nginxとapacheの話に戻りますが、CPUリソースを消費させようにもapacheとnginxではアプローチが違います。
CPUリソースを消費する(APサーバーを使わずにwebサーバー自身に動的処理をさせる)方法がnginxでは提供されていません。
cgiからmod_hoge系まで何でも対応しているapacheとFastCGIのみのnginx
CPU負荷がかかったケースを作ってベンチマークでも取ろうかと思っても、FastCGI(APサーバー)だと根本的に話が変わるので比較自体がナンセンス
あくまでCPU負荷が焦点なので静的HTMLのベンチマークなんて論外ですw
実はここがnginxを使う必要がない一番の理由だったので後日整理したいと思います。

VMだとCPUリソースもメモリも分割されてしまうのでスレッド駆動の方がマシに思える可能性はありますね。
ただ話の前提条件が同時10000アクセスでしたからねw
その状況でVMなんて使うなよって話になった上で、貧乏人はnginxでも使ってろって感じになるのかも。

Leave a Reply

Time limit is exhausted. Please reload CAPTCHA.