UNIX 网络性能分析的一些方法和步骤
上一篇 / 下一篇 2009-11-08 16:40:04 / 个人分类:性能调优
了解 UNIX® 网络布局会帮助您了解自己的网络及其运行方式。但是,当 UNIX 网络性能和传输文件或连接服务的速度突然下降时,究竟发生了什么?如何诊断网络问题并找到网络中出现问题的地方?本文介绍一些快速发现和识别性能问题的方法以及解决问题的步骤。 0`(C2Sg%Gb rV9N0简介 F;ZeL+Y0O'd#Qgl$xmH0网络的性能对于环境其余部分的性能和可靠性影响很大。如果应用程序和服务等待通过网络传输的数据,或者客户机无法连接它们或接收信息,就需要解决这些问题。 U"sZ#nt#Yq051Testing软件测试网2w5_ N%Y5O%o_ u性能问题还会影响应用程序和环境的可靠性。性能问题可能由网络故障导致,在某些情况下性能问题甚至是网络故障的原因。要想了解和诊断网络问题,首先需要了解问题的性质;问题往往与延时或带宽相关。 /[G#HA'@#M+EHj0?k}:}9r'Y0在一般情况下,网络性能问题常常与底层硬件有关;无法突破网络环境的物理限制。所有性能问题还常常与某种协议或系统相关,比如 NFS 或 Web 访问。但是,可以在操作系统中诊断和识别问题,决定正确的纠正措施。 |gv R{+k&`Y051Testing软件测试网e+f[ot|本文讨论识别性能问题涉及的几个步骤: V1{_ IS3_1oV@3J5l0
了解网络指标51Testing软件测试网DdR6s&j5~2Ycr 51Testing软件测试网6NY~&J$_;^要想了解和诊断性能问题,首先需要确定基线性能水平。首先介绍在判断基线性能时使用的两个重要概念:网络延时和网络带宽。 $Idt[;t JvJ9g+K051Testing软件测试网9rC2W'T2wSs7rjE.I6f%WB0ZzlTXJ5h0网络延时是向目的地发送请求到目的地实际接收到数据包之间的时间间隔。作为网络性能指标,延时增加说明网络繁忙,这意味着要传输的数据包数量超过了传输能力,数据的发送者在传输或重新传输之前必须等待。51Testing软件测试网5ER+JN-M fZ 51Testing软件测试网*p+d n{)S!y当网络的复杂性以及数据包要经过的主机或网关数量增加时,也会增加网络延时。点之间的线缆长度也会影响延时。对于长距离线路,传统的铜线总是比光纤连接慢。 5C yhO5Di051Testing软件测试网C3B$FlM!~!f&}[网络延时与应用程序延时不同。网络延时只与通过网络传输数据包相关,而应用程序延时是指应用程序接收请求到它做出响应之间的时间间隔。51Testing软件测试网]3~:KgeIir ,s(A8O-|U0网络带宽51Testing软件测试网KS^&y4A,dT}+Y7t 51Testing软件测试网x%d7t/|Q9l0~h带宽表示在特定的一段时间内可以通过网络传输的数据包数量。带宽影响可以传输的数据量,它把向一个主机传输数据的速度限制为网络连接支持的最大速度,在使用多个并发连接时限制总传输速度。 %k/Yx_8o#t051Testing软件测试网1tlG3U^/l,N从理论上说,网络带宽应该不会变,除非改变网络接口和硬件。影响网络带宽的主要因素是在给定时刻使用网络的主机数量。51Testing软件测试网p!oJ\nm6^1M Vys A9z|!f]Yw#D0例如,1GB 的以太网接口可以向另一个网络主机传输 1GB 数据,或向 10 个主机同时传输 100MB,或向 100 个主机同时传输 10MB。当然,实际上常常不需要稳定的带宽。在一段时间内会有来自大量主机的许多小请求,服务器的可用带宽看起来可以比客户机带宽的总和大得多。 获得统计数据51Testing软件测试网S Eoq5CEFqG 51Testing软件测试网9_ rj3s eIlb在判断网络中是否发生问题之前,需要先确定基线性能,然后据此做出假设。为此,必须通过检查各种网络参数(与网络应用程序环境相关的延时、性能和测试)判断性能,然后监视和对比性能随时间的变化。51Testing软件测试网 ao7c6RrG[1` 7[2K%fo8yj,T0应该在可控制的状况下执行基线网络测试。在理想情况下,应该在隔离(没有其他网络通信流)和有典型的网络通信流两种场景中执行测试,这会提供两个基线: R"z:W}^Zy0
对于实际测试过程,可以使用许多标准工具和测试判断基线值。51Testing软件测试网T4bIf S-Nc 6kv&adr`0测量延时 `x.v^0k4K*d2Rt0@051Testing软件测试网tF O HM2^所有网络管理员都很熟悉 ping 工具,使用它作为检查网络设备的可用性和延时的基本工具。在大多数机器上都可以使用 ping,包括客户机和服务器,只要它们已经配置为对 ping 工具发送给设备的 ICMP 数据包做出响应。简单地说,ping 向设备发送一个 echo 数据包,期望设备把数据包的内容发送回来。 Rl%I"K E_3P0gi|c_-Uz0在这个过程中,ping 可以监视发送数据包和接收响应花费的时间,这是测量 echo 过程的响应时间的有效方法。按照最简单的形式,可以向一个主机发送 echo 请求并查明响应时间(见清单 1)。51Testing软件测试网.D5i cw|P 51Testing软件测试网9@.[Y2B'R![R
需要使用Control-C停止 ping 过程。在 Solaris 和 AIX® 上,需要使用 )m v4c$gE0
清单 2中的示例是在网络比较空闲的时候得到的结果。如果在测试期间检查的主机(或网络本身)比较忙,那么 ping 时间会显著增加。只使用 ping 不足以表明是否有问题,但是有时候 ping 可以快速地查明是否有问题需要进一步诊断。51Testing软件测试网h"m^[oB| r7YI:H:]K [1u^0对 ping 的支持可能会禁用,所以在使用 ping 检查主机是否可用之前应该确认能够访问此主机。 !H9lxED;k00oIE@(|"~hp(V0理想情况下,应该在一段时间内连续地跟踪特定主机之间的 ping 时间,这样就可以得到平均响应时间,然后识别要检查的位置。 8Y/ZpW4K%df6_/\5@0$pJ)c[~IX6e2j{|:x0使用 sprayd "Hgs#_[CxYaL0cIF7v5k0sprayd 守护进程和相关联的 spray 工具向指定的主机发送一个大的数据包流,判断这些数据包中有多少得到了响应。它是一种测量网络性能的方法,不应该把它当作性能指标,因为它使用无连接的传输机制。根据定义,使用无连接传输机制发送的数据包并不保证能够到达目的地,在通信中允许丢失数据包。 1D2k%[qPw-t-e0B)^@k.zYV"Wx0使用 spray 可以查明网络上是否有很多通信流,因为如果无连接传输 (UDP) 丢失许多数据包,就说明网络(或主机)太忙了。 u[_p8Pi%U!q+A051Testing软件测试网M? `jQ9E!{0gU }在 Solaris、AIX 和其他一些 UNIX 平台上可以使用 spray。可能需要启用 spray 守护进程(通常通过 inetd)。启动 sprayd 守护进程之后,可以运行 spray 并指定主机名(见清单 3)。 .j*CqC[f5h0DM051Testing软件测试网l;}(J*kB;n e51Testing软件测试网q3NG"H ~l
1] cSx
j F.@ ^W0正如前面提到的,不应该把速度作为可靠的性能指标,但是丢失的数据包数量是有意义的。51Testing软件测试网:S3~.klA iQq)U4D 使用简单的网络传输测试51Testing软件测试网t'^!q u|'T _;v 2pcI&g n0判断网络带宽性能的最佳方法是,在与机器收发数据时检查实际的速度。可以使用许多不同的工具执行跨许多应用程序和协议的测试,但是最简单的方法往往是最有效的。 d8L Z@-G-|+|051Testing软件测试网_8}0n(Mtj4Y^%M$]A例如,为了判断在使用 NFS 通过网络传输文件时的网络带宽,可以对一个简单的文件传输过程进行计时。为此,使用 mkfile 创建一个大文件(例如使用 8kJ1?W$`051Testing软件测试网\7w-Z
erReGS Gl 应该多次运行测试,然后求出传输过程的平均时间,从而比较准确地了解性能水平。 |