Linuxサーバーでネットワーク速度を計測する方法
linuxサーバーの場合、基本的にクライアントからサーバーへの速度がどれくらい出ているのか、帯域制限は掛かっていないかなどは、コマンドベースで計測することになります。ただ、iperfという便利なツールがあって、これを使うと、簡単にクライアントからサーバーへの通信速度を計測することができます。負荷がかかってサーバーの応答が遅いのに、サーバーのリソースはスカスカ、などの状態の時に、ネットワークがボトルネックになっているかの判定にぜひご活用ください。
iperfの導入
iprefはクライアントとサーバーの両方にインストールすることになります。残念ながら、CentOSの標準のYUMレポジトリには入っていません。ただ、CentOS6(64bit)用のRPMを私のYUMレポジトリにおいておきましたので、ご自由にご活用ください。
http://www.testvps.info/centos6/rpm/
(YUMレポジトリへの追加の方法は、野良YUMレポジトリを構築しましたの記事をご覧ください)
$ sudo yum install iperf
Macの場合は、brew installで普通に入ります。
$ brew install iperf
openSUSEの場合も標準のレポジトリに登録されていますので、Zypperでインストールできます。
$ sudo zypper install iperf
iperfでサーバーへの通信速度計測
まず、サーバーで以下のコマンドでiperfの待ち受けサーバーを立てます
$ iperf -s
これでサーバーからは5001ポートで待ち受け状態になります。ポートを変更したい場合は-pオプションで任意のポートに変えられます。サーバーのファイアウォールで該当ポートが開いていなかったら開放します。
次にクライアントから以下のコマンドで接続します。ホスト名は任意に変えてください(IPアドレスも可能です)
$ iperf -c www.geek.sc -p 5001
これで、少し待つとクライアントからサーバーへの通信速度が出てきます。
さくらVPSから自宅サーバーに速度計測を行った結果です。
$ iperf -c www.geek.sc -p 5001
------------------------------------------------------------
Client connecting to www.geek.sc, TCP port 5001
TCP window size: 22.7 KByte (default)
------------------------------------------------------------
[ 3] local 133.242.176.20 port 57046 connected with 180.131.119.243 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 114 MBytes 95.6 Mbits/sec
95.6Mbps出ていますね
ネットワークがボトルネックがどうか
回線速度はけっこう変動するので何回かテストしてみてください。その検証の結果、ネットワークの遅延が観測された場合には、クライアントからサーバーまでの何らかの経路にボトルネックが存在している可能性があります。負荷を掛けているのにサーバーのリソースがスカスカという場合は、設定が悪いか、ネットワークに問題がある場合が多いです。原因の切り分けにご活用ください。
第2節のタイトルがiprefになっていますよ。
ご指摘ありがとうございます!修正しました。