在实际运维故障调试中,网络设备性能往往是需要重点关注的对象。网络性能问题是最直接影响系统整体效果的重要因素。网络性能可以包括两个层面指标:当前实际值和性能极值。实际值是指系统实际运行或者运行高峰期时网络流量和负载情况。而性能极值则是测试网络整体的极限情况。
对Oracle数据库而言,一些重要架构模式,如RAC、Dataguard和Golden Gate,都需要可靠地网络结构进行支持。在出现故障的时候,进行网络节点间的测试验证也是经常需要进行步骤。本篇介绍Iperf工具进行网络带宽测试,查看网络设备的性能瓶颈。
Iperf是一个开源小工具,官方网站为。 目前的Iperf支持TCP和UDP两个协议带宽测试内容,操作系统也覆盖Linux、Windows、MacOS等主流操作系统。对Oracle而言,TCP和UDP两个协议就已经覆盖了最常用的协议类型。Oracle RAC在互联私有网络中使用UDP协议(Windows版本除外),公网数据传输访问则使用TCP协议。
下面我们演示在Linux环境中使用Iperf方法。
1、环境配置
Iperf工作模式是一个典型的CS模式,工作原理是通过客户端发送网络包传输到服务器端,从而计算出网络情况。
首先从官方网站上下载Linux版本的iperf,Linux版本的目前是bz压缩包格式,上传到服务器后需要进行额外的解压过程。
我们准备两台服务器进行测试,服务器1和服务器2。
服务器1IP地址为172.16.3.27,版本为Linux内核2.6.32。上传iperf到对应目录并解压。
[root@TESTAUDDB ~]# uname -r
2.6.32-131.0.15.el6.x86_64
[root@TESTAUDDB ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 34:40:B5:A1:56:C0
inet addr:172.16.3.27 Bcast:172.16.255.255 Mask:255.255.255.0
inet6 addr: fe80::3640:b5ff:fea1:56c0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
[root@TESTAUDDB ~]# cd /
[root@TESTAUDDB /]# mkdir iperf
[root@TESTAUDDB /]# ls -l | grep iperf
drwxr-xr-x. 2 root root 4096 Mar 21 08:30 iperf
上传软件包并且解压。
[root@TESTAUDDB iperf]# bzip2 -d iperf64.bz2
[root@TESTAUDDB iperf]# chmod 755 iperf64
[root@TESTAUDDB iperf]# ls -l
total 856
-rwxr-xr-x. 1 root root 876211 Mar 21 08:33 iperf64
第二台服务器IP地址为172.16.3.28,同样为Linux 2.6.32。
[root@TESTAUDAPP ~]# hostname
TESTAUDAPP
[root@TESTAUDAPP ~]# uname -r
2.6.32-131.0.15.el6.x86_64
eth0 Link encap:Ethernet HWaddr 34:40:B5:A1:53:D8
inet addr:172.16.3.28 Bcast:172.16.255.255 Mask:255.255.255.0
inet6 addr: fe80::3640:b5ff:fea1:53d8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3350494 errors:0 dropped:0 overruns:0 frame:0
上传iperf目录,解压和服务器1相同,过程略。
[root@TESTAUDAPP iperf]# ls -l
total 856
-rwxr-xr-x. 1 root root 876211 Mar 21 09:29 iperf64
注意:作为IPerf服务器端的主机,最好关闭防火墙程序或者将其5001端口开启。
[root@TESTAUDDB iperf]# service iptables stop
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: nat mangle filter [ OK ]
iptables: Unloading modules: [ OK ]
2、IPerf进行TCP协议诊断测试
我们先进行简单的TCP协议网络测试。在服务器端(3.27)启动Iperf程序,以服务器模式启动。
(在3.27上)
[root@TESTAUDDB iperf]# ./iperf64 -s
---------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
-----------------------------------------------
在客户端,通过参数-c启动程序为客户端模式。客户端参数-c取值为连接服务器IP地址。
[root@TESTAUDAPP iperf]# ./iperf64 -c 172.16.3.27
----------------------------------------------
Client connecting to 172.16.3.27, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------
[ 3] local 172.16.3.28 port 64207 connected with 172.16.3.27 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.10 GBytes 943 Mbits/sec
最后一行为测试结果。Interval表示连接测试的时间范围,通常为10s。Transfer为在这个时间段内,客户端和服务器传输的数据总量。结果Bandwidth是我们最关注的就是网络传输速率,也就是带宽。
从实验结果可以看出,两台服务器之间的网络带宽为943Mbits/sec。