なーお さんの日記
公開サーバーの更新計画、徐々に進んでいます。
現時点で、ハードとハイパーバイザー(VMWare-ESXi4.0)は決めましたが、ゲストOSで色々悩んでいたところ、
- web server : CentOS5.4
- mail server : Vine Linux 5.0
- メールサーバーをVineにする理由は、drac+qpopperで、pop before smtpとpop3s が簡単にできるので、今回メインのサーバーと分離した後も融通が効くため。 CentOSだとこの組み合わせはちと面倒なんで。
の2本で行くことで仮決めしました。
ここに至る経緯ですが。。
経緯
うちの環境でweb serverに要求されるのは、何と言ってもLAMPサーバーのトータル速度と安定性のバランスのよさです。 XOOPSで重い処理をがんがんこなすサイトがいくつか乗るので。。
軽量パッケージでは?
速さだけでいえば、軽量パッケージの Ubuntu9.10、Vine Linux あたりが速いことは確認済み。 特にUbuntuは、x86_64パッケージは元より、i386パッケージでもカーネルconfigがpara-virtualization(VMI:準仮想化)が有効になっており、どちらも軽快です。
しかしこのUbuntu、32bit版も64bit版も、ローカルでブラウザアクセスするととっても速いのに、なぜかネットワーク経由でアクセスすると、べらぼうに遅い。 追求すれば原因も見つかるかもしれませんが、あまり時間を割けないので諦めました。
続いて、Vine Linux5.0。 これも軽いんだけれども、どうしてPHPが5.3になっちゃっているの? Xoops Cube Legacyでちょっと古いコアだと動作が変。 全サイトを一気にアップグレードするのは困難なので、これもパス。 これはメールサーバーに廻します。
本命のCentOS
最後に、CentOS、(5.4)。 さすがにサーバー用に実績の高い枯れたパッケージ。安定性は抜群です。 64bitのx86_64パッケージが、やはり何気に速い。
試しに、こちらのサイトを参考に、32bit版にカーネル再構築を行って、para-virtualization(VMI:準仮想化)を組み込んでみたりもしていますが、 素の32bitより若干速い程度の気がします。
(VMIが有効になった様子)
$ dmesg |grep vmi Linux version 2.6.29 (root@centvmi) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Tue Dec 1 19:25:10 JST 2009 vmi: registering clock event vmi-timer. mult=10507671 shift=22 vmi: registering clock event vmi-timer. mult=10507671 shift=22 Booting paravirtualized kernel on vmi vmi: registering clock source khz=2505224
なお、Vine Linex5.0もVMIを有効にカーネル再構築したのですが、当該カーネルでブートしてもVMIが有効になりませんでした。
速度比較
いくつか速度比較を行ったので、情報として貼っておきます。
xpWikiページ表示速度
下の画像は、以下の3つのディストリで、なーお'nWEBのこのxpWikiページを表示した時の速度比較です。
- 既存VMWare-Server2.0上での、VineLinux4.2 ゲスト
- 新規ESXi上での、CentOS-5.4_x86_64(63bit) ゲスト
- 同じESXi上での、CentOS-5.4_i386(32bit)-VMI ゲスト
それぞれのお尻のところに処理時間が表示されてますね。
VMware-Server-Vine4 | 0.567 s |
ESXi-CentOS-x86_64 | 0.340 s |
ESXi-CentOS-i386VMI+SAS | 0.422 s |
ESXi-CentOS-x86_64+SAS(追記) | 0.327 s |
(091207:追記分は、ESXiの仮想SCSIコントローラに「LSI Logic SAS」を選択した場合。)
CPUとマザーボードは同じAMD-AthronX2-4850e、on M2NPV。 ハードディスクも同じWD6400AAKS-Raid1ですが、 1、現行VMWare-serverのほうはオンボードのnVIDIAのFake-Raid、 2,3、新規のほうはESXiに(ADAPTEC)ASR-2405-Raidなので、この部分はそこそこハンデがあります。 但し、2、3、は両者同一ホスト上に同時に稼動させています。
さすがに、x86_64は速いですが、32bitのi386も負けてません。 VMWare-Server2も健闘していますが、 高負荷時はCPUパワーを思い切り使い果たしての数値、ゲストを追加する気に全くなりません。 片やESXiはゲスト2つでも涼しい顔なのです。
ディスクR/W性能
ここからは、ESXi上のCentOS同士に絞っての比較。
こちらのサイトを参考に、仮想HDDへの簡単な読み書き性能を比較してみました。 思った以上に差が出てます。
Read | Write | |
x86_64 | 123 MB/s | 121 MB/s |
i386VMI+SAS | 105 MB/s | 73 MB/s |
x86_64+SAS(追記) | 164 MB/s | 147 MB/s |
(091207:追記分は、ESXiの仮想SCSIコントローラに「LSI Logic SAS」を選択した場合。ビックリする結果が出ました。下記問題も解決しています。)
ここまで差があれば、64bitにキマリじゃん、 と思うのですが、ちょっと問題が出て悩んでます。
以下は、なーお'nWEBの新着情報にアクセスした時の、VNC経由でのGNOMEシステムモニタグラフ。 左がx86_64、右がi386。 明らかに、64bitの方に異常な高負荷がかかってます。 同じデータを参照しているのに。
少し調べてみると、picoモジュールの本文xpWikiフィルターを通したページを多数舐める処理が入るので、大きな差になって出ている様子。 新着リストに本文非表示とすると、すっと収まる。
どうしたものか。。 picoフィルターとd3pipesブロックジョイントをハックするだけでも行ける気もするけど、今後のことを考えると心配。。 ああ、悩ましい。
(追記)結局、x86_64で、ESXiの仮想ディスクコントローラを「LSI Logic SAS」とすることで、ディスク速度も向上し、上記のような問題はなくなりました。
ハードとソフト環境
- ハードウエア
- M/B:(ASUS)M2NPV-MX
- CPU:(AMD) AthronX2-4850e(TDP45W)
- RAIDcard: (ADAPTEC) ASR-2405 (RAID-1)
- HDD:(WD) WD6400AAKS (x2)
- メモリ:(CFD)DDR2-PC2-6400-2GB x3 =計6GB
- ソフトウエア
- ハイパーバイザ:VMWare-ESXi-4.0.0 Releasebuild-171294
- OS:(CentOS)5.4、Kernel-2.6.18-164.6.1.el5 (x86_64)
- httpd:Apache-2.2.3-31.el5.centos.2(Arch:x86_64)
- php: 5.1.6-23.2el5_3(Arch:x86_64)
- mysql:5.0.77-3.el5(Arch:x86_64)
- core:Xoops Cube Legacy 1.0.6
- pico:1.81
- Altsys:0.71
- xpWiki:4.02.12
- d3pipes:0.66