Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2844972
  • 博文数量: 200
  • 博客积分: 2413
  • 博客等级: 大尉
  • 技术积分: 3067
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-01 22:07
文章分类

全部博文(200)

文章存档

2018年(2)

2017年(8)

2016年(35)

2015年(14)

2014年(20)

2013年(24)

2012年(53)

2011年(44)

分类: LINUX

2016-05-24 16:04:00

在实际运维故障调试中,网络设备性能往往是需要重点关注的对象。网络性能问题是最直接影响系统整体效果的重要因素。网络性能可以包括两个层面指标:当前实际值和性能极值。实际值是指系统实际运行或者运行高峰期时网络流量和负载情况。而性能极值则是测试网络整体的极限情况。

Oracle数据库而言,一些重要架构模式,如RACDataguardGolden Gate,都需要可靠地网络结构进行支持。在出现故障的时候,进行网络节点间的测试验证也是经常需要进行步骤。本篇介绍Iperf工具进行网络带宽测试,查看网络设备的性能瓶颈。

Iperf是一个开源小工具,官方网站为 目前的Iperf支持TCPUDP两个协议带宽测试内容,操作系统也覆盖LinuxWindowsMacOS等主流操作系统。对Oracle而言,TCPUDP两个协议就已经覆盖了最常用的协议类型。Oracle RAC在互联私有网络中使用UDP协议(Windows版本除外),公网数据传输访问则使用TCP协议。

下面我们演示在Linux环境中使用Iperf方法。

 

1、环境配置

 

Iperf工作模式是一个典型的CS模式,工作原理是通过客户端发送网络包传输到服务器端,从而计算出网络情况。

首先从官方网站上下载Linux版本的iperfLinux版本的目前是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  ]

 

2IPerf进行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表示连接测试的时间范围,通常为10sTransfer为在这个时间段内,客户端和服务器传输的数据总量。结果Bandwidth是我们最关注的就是网络传输速率,也就是带宽。

从实验结果可以看出,两台服务器之间的网络带宽为943Mbits/sec

 

3UDP协议测试

 

UDP协议是RAC私有网络互联的标准协议类型。使用iperf可以进行标准测试带宽。通过额外的-u参数,可以开启IPerf进入UDP工作模式。

 

[root@TESTAUDDB iperf]# ./iperf64 -s -u

-----------------------------------------------

Server listening on UDP port 5001

Receiving 1470 byte datagrams

UDP buffer size: 4.00 MByte (default)

--------------------------------------------

 

客户端方面,也需要加入-u参数进行UDP数据包发送。

 

[root@TESTAUDAPP iperf]# ./iperf64 -u -c 172.16.3.27

-------------------------------------

Client connecting to 172.16.3.27, UDP port 5001

Sending 1470 byte datagrams

UDP buffer size: 4.00 MByte (default)

--------------------------------------------

[  3] local 172.16.3.28 port 24436 connected with 172.16.3.27 port 5001

[ ID] Interval       Transfer     Bandwidth

[  3]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec

[  3] Sent 893 datagrams

[  3] Server Report:

[ ID] Interval       Transfer     Bandwidth       Jitter   Lost/Total Datagrams

[  3]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec  0.005 ms    0/  893 (0%)

 

测试结果中,UDP连接带宽为1.05Mbit/sec

 

对指定时间发送的数据量,1.25Mbytes是默认取值。我们可以根据实际的情况进行调节,通过参数-b可以设置数据量。

 

[root@TESTAUDAPP iperf]# ./iperf64 -u -c 172.16.3.27 -b 10m

------------------------------------------------

Client connecting to 172.16.3.27, UDP port 5001

Sending 1470 byte datagrams

UDP buffer size: 4.00 MByte (default)

--------------------------------------------------

[  3] local 172.16.3.28 port 9254 connected with 172.16.3.27 port 5001

[ ID] Interval       Transfer     Bandwidth

[  3]  0.0-10.0 sec  11.9 MBytes  10.0 Mbits/sec

[  3] Sent 8505 datagrams

[  3] Server Report:

[ ID] Interval       Transfer     Bandwidth       Jitter   Lost/Total Datagrams

[  3]  0.0-10.0 sec  11.9 MBytes  10.0 Mbits/sec  0.006 ms    0/ 8505 (0%)

 

实际测试中,可以设置比较大的数据包值,给予一定的数据压力。但是-b只能在UDP协议中使用,在TCP协议中不能用。

 

[root@TESTAUDAPP iperf]# ./iperf64 -c 172.16.3.27 -b 10m

WARNING: option -b implies udp testing

-------------------------------------------

Client connecting to 172.16.3.27, UDP port 5001

Sending 1470 byte datagrams

UDP buffer size: 4.00 MByte (default)

---------------------------------------

[  3] local 172.16.3.28 port 33902 connected with 172.16.3.27 port 5001

write2 failed: Connection refused

[ ID] Interval       Transfer     Bandwidth

[  3]  0.0- 0.0 sec  1.44 KBytes  9.58 Mbits/sec

[  3] Sent 1 datagrams

read failed: Connection refused

[  3] WARNING: did not receive ack of last datagram after 1 tries.

 

最后,测试一下本机之间的连接情况,也就是连接127.0.0.1本地地址。

 

[root@TESTAUDDB iperf]# ./iperf64 -c 127.0.0.1

-------------------------------------

Client connecting to 127.0.0.1, TCP port 5001

TCP window size: 49.6 KByte (default)

--------------------------------------------

[  3] local 127.0.0.1 port 17502 connected with 127.0.0.1 port 5001

[ ID] Interval       Transfer     Bandwidth

[  3]  0.0-10.0 sec  13.0 GBytes  11.2 Gbits/sec

 

4、结论

 

IPerf是我们进行网络实测的好工具,记录下来,留待需要的朋友不时之需。



补充,对于Oracle Linux Server release 6.5,适合下载iperf-2.0.2-4.el4.x86_64版本。

其他参数:
客户端
 -t, --time      #        time in seconds to transmit for (default 10 secs)


阅读(7270) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~