Ubunt13.10へクラウドのOpenStack (havana)をNIC2枚のサーバーへインストール
VMのベンチマーク
VMへsshにてログインしてroot権限にて計測
hdparm
root@admin:~# hdparm /dev/vda1
/dev/vda1:
HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
readonly = 0 (off)
readahead = 256 (on)
geometry = 20803/16/63, sectors = 20969472, start = 2048
root@admin:~# hdparm -Tt /dev/vda1
/dev/vda1:
Timing cached reads: 10836 MB in 2.00 seconds = 5422.80 MB/sec
Timing buffered disk reads: 582 MB in 3.01 seconds = 193.66 MB/sec
fio
fioにて最新をチェックしダウンロード。記事作成時現在で2013/11/19に2.1.4がリリースされていました。
fio 2.1.4 インストール
apt-get install gcc make libaio-dev -y
mkdir -p /usr/local/src/fio
cd /usr/local/src/fio
wget http://brick.kernel.dk/snaps/fio-2.1.4.tar.bz2
tar jxvf fio-2.1.4.tar.bz2
cd fio-2.1.4
./configure
make
make install
計測
cd /tmp
wget http://www.winkey.jp/downloads/visit.php/fio-crystaldiskmark -O crystaldiskmark.fio
fio crystaldiskmark.fio
結果からread:行を抜粋。
Seq-Read: (groupid=0, jobs=1): err= 0: pid=8458: Mon Dec 9 17:16:47 2013
read : io=1024.0MB, bw=499322KB/s, iops=487, runt= 2100msec
Seq-Write: (groupid=1, jobs=1): err= 0: pid=8459: Mon Dec 9 17:16:47 2013
write: io=1024.0MB, bw=192824KB/s, iops=188, runt= 5438msec
Rand-Read-512K: (groupid=2, jobs=1): err= 0: pid=8460: Mon Dec 9 17:16:47 2013
read : io=1024.0MB, bw=416598KB/s, iops=813, runt= 2517msec
Rand-Write-512K: (groupid=3, jobs=1): err= 0: pid=8461: Mon Dec 9 17:16:47 2013
write: io=1024.0MB, bw=176945KB/s, iops=345, runt= 5926msec
Rand-Read-4K: (groupid=4, jobs=1): err= 0: pid=8462: Mon Dec 9 17:16:47 2013
read : io=795024KB, bw=13250KB/s, iops=3312, runt= 60000msec
Rand-Write-4K: (groupid=5, jobs=1): err= 0: pid=8473: Mon Dec 9 17:16:47 2013
write: io=716572KB, bw=11943KB/s, iops=2985, runt= 60001msec
Rand-Read-4K-QD32: (groupid=6, jobs=1): err= 0: pid=8484: Mon Dec 9 17:16:47 2013
read : io=1024.0MB, bw=45853KB/s, iops=11463, runt= 22868msec
Rand-Write-4K-QD32: (groupid=7, jobs=1): err= 0: pid=8495: Mon Dec 9 17:16:47 2013
write: io=1024.0MB, bw=43324KB/s, iops=10831, runt= 24203msec
以前の書いたLinuxのI/OベンチマークでCrystalDiskMarkと同等の計測をfioで実現のように手動でCrystalDiskMark3.0のような形に整理してみます。
-----------------------------------------------------------------------
fake CrystalDiskMark 3.0 fio (C) 2013 hiroron
WinKey : http://www.winkey.jp/
-----------------------------------------------------------------------
* MB/s = 1,048,576 byte/s
Sequential Read : 487.62 MB/s
Sequential Write : 188.3 MB/s
Random Read 512KB : 406.83 MB/s
Random Write 512KB : 172.8 MB/s
Random Read 4KB (QD=1) : 12.94 MB/s [ 3312 IOPS]
Random Write 4KB (QD=1) : 11.66 MB/s [ 2985 IOPS]
Random Read 4KB (QD=32) : 44.78 MB/s [ 11463 IOPS]
Random Write 4KB (QD=32) : 42.31 MB/s [ 10831 IOPS]
Test : 1024 MB [/dev/vda1 type ext4]
Date : 2013/12/10 2:16:47
OS : Ubuntu 12.04 LTS [precise] (3.2.0-57-virtual)
まずまずの性能は出てるようです。
abベンチ
計測環境
Windows7上のVirtualBoxの仮想マシン(CPU:1C 2.80GHz/MEM:1GB)へUbuntu13.10を入れてそこからabにて計測しました。Windows7もマネージドサーバーも同じHUB上に有線で繋がってる状態での計測です。
VMをm1.tinyからm1.smallへリサイズして割り当てメモリを2GBに増やしました。そしてApache2.2+MySQL5.5+php5.3+fcgid+APC3.1+ProFTP1.3+Postfix2.9なインターネットサイト環境を構築し計測
Geeklog2.1RC1をインストールし画像付きの記事を5件ほど投稿した状態のサイトを構築し計測(動的なphpコンテンツ)
ab -n500 -c15 http://admin.domain.com/
初回はキャッシュがきいてなくて若干遅い上にFailedも出ている。2回めの計測結果からFailedがなくなり、3回目移行もほぼ同様の結果になります。
1回目Document Length: 26025 bytes
Time taken for tests: 41.409 seconds
Failed requests: 48
Requests per second: 12.07 [#/sec] (mean)
2回目
Document Length: 26025 bytes
Time taken for tests: 37.449 seconds
Failed requests: 0
Requests per second: 13.35 [#/sec] (mean)
3回目
Document Length: 26025 bytes
Time taken for tests: 37.412 seconds
Failed requests: 0
Requests per second: 13.36 [#/sec] (mean)
4回目
Document Length: 26025 bytes
Time taken for tests: 37.443 seconds
Failed requests: 0
Requests per second: 13.35 [#/sec] (mean)
上記はインスタンスをリサイズした後にメモリが512MBから2GBになったのでチューニングしてなかったApacheやMySQLをチューニングしてから再度計測
Failedは出なくなりましたがスピードは同じようなものです。
Document Length: 26025 bytes
Time taken for tests: 41.442 seconds
Failed requests: 0
Requests per second: 12.07 [#/sec] (mean)
Document Length: 26025 bytes
Time taken for tests: 37.405 seconds
Failed requests: 0
Requests per second: 13.37 [#/sec] (mean)
次に、どれくらいでFailedが出るかやってみます。
秒間の処理数が12~13のようですから同時接続25をまず試してみます。
ab -n500 -c25 http://admin.domain.com/
Document Length: 26025 bytes
Concurrency Level: 25
Time taken for tests: 38.608 seconds
Complete requests: 500
Failed requests: 0
Write errors: 0
Requests per second: 12.95 [#/sec] (mean)
25はクリアしました。次は同時接続35にチャレンジです。
ab -n500 -c35 http://admin.domain.com/
Document Length: 26025 bytes
Concurrency Level: 35
Time taken for tests: 38.483 seconds
Complete requests: 500
Failed requests: 27
(Connect: 0, Receive: 0, Length: 27, Exceptions: 0)
Write errors: 0
Requests per second: 12.99 [#/sec] (mean)
ここでFailedが出ました。phpが動いてるのでオールインワンの単一サーバーだとこんなものですね。
(おまけ)Chrome開発ツールのNetwork
Geeklog2.1で構築したサイトの表示時のリソースへのネットワークに関する情報をGoogleChromeの開発ツールでみるとこんな感じです。