サーバのベンチマークテストをする場合、回線速度も測定しておきましょう。
Portのスキャン
lsof -i:[port] でも調べられますが、使用している全ての PORT(STATE, SERVICE) を調べる場合 nmap を使うと良いと思います。
yum install nmap
$ nmap localhost
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00044s latency).
Not shown: 993 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
3001/tcp open nessus
3305/tcp open mysql
ワンライナーで簡易測定
ベンチマークテストには不十分ですが、簡易測定としてpingを使ってホストまでの速度を計測できます。
pingではICMPパケットを送信します。ICMP (Internet Control Message Protocol) はIP通信のサポートをするプロトコルです。
ホストはこのエコー要求に応答します。
ペイロードサイズを変えて実験してみました。
# mac os x
$ sudo ping -l 10 www.google.com
round-trip min/avg/max/stddev = 35.886/76.981/131.742/26.551 ms
$ sudo ping -l 60000 www.google.com
round-trip min/avg/max/stddev = 32.604/1481.501/3248.580/1166.351 ms
RTT(round-trip-time) はペイロードサイズ10byteの時に平均65ms、60kbyteで平均2555msでした。
(60000 – 10) x 2 / (1481-76) ms ≒ 85.7 byte/ms ≒ 685kbps
無線環境というのもありますが、どうも誤差/偏差が大きすぎて信頼性は低いですね。
netperfで測定
本格的に測定したい場合、RHLE系ではnetperfというツールがあります。
unix、windowsで動作します。
公式からDLします。
# cent os
$ cd netperf-2.6.0
$ ./configure
$ make
$ sudo make install
サーバとクライアントの両方にインストールします。
デフォルトでは 12865port を使用、10秒間計測します。
先にサーバで実行します。
$ netserver
次にクライアントで実行します。
$ netperf -H [ip]
throughputの結果が表示されます。
100Mbpsの環境でも50Mbpsはいくと思ったのですが実測は30~40Mbpsしかでませんでした。
また, netperf2.5とパッケージマネージャで入れたnetserver2.4.5だと上手く動きませんでした。
netserver2.5だと動いたのでできるだけversionは合わせた方が良いようです。
iperfで測定
Debian系ではTCPパケットで測定するiperfが使えます。
$ sudo apt-get install iperf
先にサーバで実行します。
$ iperf -s
次にクライアントです。
$ iperf -c [IP]
サーバ/クライアント共に uオプション を指定することでUDPモードで動作します。
$ iperf -c [IP] -u -b 10000000
試しに Debian(BeagleBoneBlack) -> USB-Wifi -> WiMax -> Debian(VirtualBox) という構成で測定してみました。
TCPの速度は三回測定(10秒x3)して10.9, 11.6 ,11.3で平均11.2Mbit/秒でした。