1、传输层故障的查找和排除,流量的控制,图 86TCP的流量控制,传输层故障的查找和排除,用户数据报协议UDP UDP是非连接的,无需建立连接就将数据直接封装在IP数据报中进行发送。而且UDP不使用确认信息对数据的到达进行确认,也不对接收到的数据进行排序。因此,利用UDP协议传送的数据可能会出现丢失、重复和乱序现象。 UDP的优点是实现简单和运行高效,适合于小的、单独报文的发送,以及和时间相关的应用 网络地址转换技术NAT 网络地址转换的类型有:静态NAT(staticNAT)、NAT池(pooledNAT)和端口NAT(PAT)三种类型,其他层故障的查找和排除,DNS服务配置不当引起网络故障的案
2、例,本章小结,本章根据分层定位分析法给出了 物理层故障查找和排除 数据链路层故障查找和排除 网络层故障查找和排除 传输层故障查找和排除等案例。,练习与思考,简述物理层故障的类型。 练习使用分层定位分析法来解决网络故障。 简述动态路由协议RIP的工作原理。 简述动态路由协议OSPF的工作原理。 简述传输控制协议TCP连接的建立与释放过程。 简述网络地址转换技术NAT。 练习netstat命令的使用。 练习nslookup命令的使用。 练习使用网络分析软件来捕获分析网络数据。,计算机网络管理理论与实践教程,Thank You !,计算机网络管理理论与实践教程,第九章 网络性能管理,全国信息技术水平
3、考试,网络性能管理,网络性能管理的指标 采集性能指标数据的方法 网络性能管理的流程 网络性能管理常用工具 服务质量,网络性能管理的指标,网络总体性能指标,网络性能管理的指标,节点性能指标,网络性能管理的指标,网络链路指标,网络性能管理的指标,网络应用服务的性能指标,采集性能指标数据的方法,从网络上获得网络性能指标数据的方法有以下三类: 查询网络设备获得与性能相关的信息 观察网络上现有的流量 生成测试流量发送到网络上,以测试网络性能,网络性能管理流程,图 91性能管理流程,网络性能管理常用工具,节点性能管理工具 Windows2000操作系统提供了性能监视器和网络监视器 Linux操作系统监视工
4、具 系统资源管理工具Server Vantage 链路性能管理工具 DSP-4000数字式电缆分析仪 OptiFiber光缆认证分析仪 网络性能管理工具 网络性能分析测试工具SmartBits 网络流量检测工具MRTG 网络性能测试工具Netperf,网络性能管理常用工具,网络应用服务性能测试工具 负载测试工具LoadRunner 网络应用性能管理工具Network Vantage 自动化负载测试工具QALoad 服务器性能工具Web Application Stress,服务质量,QoS概述 传统网络缺陷 传统IP路由技术的吞吐量不高 传统IP没有服务质量QoS保证 QoS功能 报文分类和着
5、色 网络拥塞管理 网络拥塞避免 流量监管和流量整形 QoS信令协议,服务质量,QoS服务模型 综合服务体系结构IntServ 两种服务:保证服务、负载控制服务 四个功能部件:资源预留协议(RSVP)、访问控制(Admission Control)、分类器(Classifier)、队列调度器(Scheduler) 调度算法:WFQ、WF2Q、SCFQ、VC、MD-SCFQ、WRR等 流程: 在发送报文前,应用程序首先通知网络它自己的流量参数和需要的特定服务质量请求 网络在收到应用程序的资源请求后,执行资源分配检查,基于应用程序的资源申请和网络现有的资源情况,判断是否为应用程序分配资源。一旦网络确
6、认为应用程序的报文分配了资源,则只要应用程序的报文控制在流量参数描述的范围内,网络将承诺满足应用程序的QoS需求。 应用程序一般在收到网络的确认信息,才开始按照申请的流量参数和特定服务质量请求发送报文,服务质量,区分服务体系结构DiffServ 所提供服务: Expedited Services(EF-RFC2598) Assured Services(AF-RFC2597) 所运用技术: CAR 队列技术 IPQoS的实现机制 队列管理机制(Queue Management Mechanism) PPD、EPD、RED、FRED、RIO、BLUE等算法,服务质量,队列调度机制Queueing
7、 Scheduling Mechanism队列调度算法主要有:基于循环调度的算法、基于GPS(Generalized Processor Sharing)的算法两大类 基于约束的路由(CBR) 业务量工程,本章小结,对反映网络性能的指标分为网络总体性能指标、节点性能指标、链路性能指标和网络应用服务的性能指标等 介绍了采集性能指标数据的三种方法:查询网络设备获得与性能相关的信息、观察网络上现有的流量、生成测试流量发送到网络上测试网络性能,并给出了进行网络性能管理的参考流程。 概要地介绍了随着新兴的多媒体实时业务而出现的服务质量(Qos)技术、服务质量以及实现机制等内容。,联系与思考,简述反映网络
8、性能的各类性能指标。 简述采集性能指标数据的三种方法。 练习查询网络设备的MIB中与性能有关的信息。 举例说明通过生成测试流量来采集性能指标数据的方法。 简述网络性能管理的流程。 网络性能管理都有哪些常用工具? 练习使用测试工具来采集节点性能指标数据。 简述OoS的IntServ模型。 简述OoS的DiffServ模型中域的概念以及各种类型路由器的作用。,计算机网络管理理论与实践教程,Thank You !,计算机网络管理理论与实践教程,第十章 网络性能管理案例,全国信息技术水平考试,网络性能管理案例,使用MRTG监测网络流量 使用netperf监测网络流量 Linux操作系统性能测试 Lin
9、ux操作系统性能优化 使用WAS测试Web服务器性能 使用Apache Bench测试HTTP服务器的性能 用Apache Bench测试Apache HTTP服务器性能 Apache HTTP服务器的性能优化,使用 MRTG监测网络流量,编译、安装MRTG 最新版本的MRTG程序可在其官方网站http:/www.mrtg.org/上下载。其中包含程序原代码、编译好的Win32应用程序、以及Linux操作系统的RPM安装包。若希望在Unix或者Linux操作系统的环境下编译MRTG程序原代码,必须先确定机器上已安装GCC编译程序及Perl程序。由于MRTG程序产生的流量统计图为PNG格式的图形
10、文件,并且使用了图形压缩函数库zlib、图表绘制函数库gd以及有关处理png图形格式的函数库。因此,为了使MRTG能够正常的安装和运行,在安装MRTG的主机中必须事先安装好perl、zlib、gd、libpng、ucd-SNMP等软件。可以用如下的RPM命令来确认是否安装了这些软件:,使用 MRTG监测网络流量,# rpm -qa | grep perl perl-5.6.0-17 mod_perl-1.24_01-3 # rpm -qa | grep zlib zlib-1.1.3-24 zlib-devel-1.1.3-24 # rpm -qa | grep gd gd-1.8.4-4 g
11、d-devel-1.8.4-4 # rpm -qa | grep libpng libpng-1.0.12-2 libpng-devel-1.0.12-2 # rpm -qa| grep SNMP ucd-SNMP-4.2.1-7 ucd-SNMP-utils-4.2.1-7 ucd-SNMP-devel-4.2.1-7,使用 MRTG监测网络流量,gd:绘图链接库,用来处理PNG格式的图形文件。 下载地址:http:/ libpng:gd在产生PNG图形文件时需要的链接库。 下载地址:http:/www.libpng.org/pub/png/src/。 zlib:libpng压缩图形文件时需
12、要的链接库。 下载地址:http:/www.gzip.org/zlib。 另外,由于MRTG使用HTML的格式来显示监测的结果,因此还需要在主机中安装好一个Web服务器,如Apache的HTTP服务器。 当上述链接库、编译环境和Web服务器都安装好了之后,便可以按照如下的步骤编译、安装MRTG软件。首先解开程序原代码的压缩包,并切换至该目录下: # tar -zxvf mrtg-2.9.17.tar.gz # cd mrtg-2.9.17,使用 MRTG监测网络流量,接下来便可配置编译程序进行编译时需用的各项参数,包括即将生成的mrtg应用程序存放的路径(本案例设定mrtg 的安装路径为:/u
13、sr/local/mrtg-2),zlib、gd、libpng等链接库的存放路径等参数: # ./configure -prefix=/usr/local/mrtg-2 -with-gd=/usr/include -with-gd-lib=/usr/lib -with-gd-inc=/usr/include -with-png=/usr/include -with-zlib=/usr/include,使用 MRTG监测网络流量,当configure程序对系统环境检查完成并确认适合安装MRTG程序后,将在安装目录下生成Makefile文件。接下来便可执行make命令编译mrtg源程序,然后将编译
14、完成的mrtg可执行应用程序安装到指定路径里: # make # make install,使用 MRTG监测网络流量,在被管网络设备上配置SNMP服务 对于路由器、交换机、主机等不同的网络设备,配置和启动SNMP服务的方法各不相同。在本案例中,被监管的网络设备为一台运行Linux操作系统的主机,下面讲解如何在该主机上配置、运行SNMP服务。 首先检查在该主机上是否安装了SNMP软件,如果没有检测到SNMP软件包,则需要通过安装光盘进行安装,或者从Internet上下载相关软件进行安装: # rpm -qa| grep SNMP ucd-SNMP-4.2.1-7 ucd-SNMP-utils-
15、4.2.1-7 ucd-SNMP-devel-4.2.1-7,使用 MRTG监测网络流量,如果主机上已经安装了SNMP软件包,则修改SNMPd的配置,使其允许mrtg软件读取该主机上的SNMP统计数据。命令如下: vi /etc/SNMP/SNMPd.conf 将: #view systemview included mib2修改为: view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc 将: access notConfigGroup “ any noauth exact systemview none none修改为: access
16、notConfigGroup “ any noauth exact mib2 none none 然后重新启动SNMPd: /etc/rc.d/init.d/SNMPd restart,使用 MRTG监测网络流量,配置MRTG MRTG的配置信息保存在mrtg.cfg文件中,可以手工创建并编辑该配置文件,在其中定义希望的监控特性。mrtg软件包提供有cfgmaker配置工具,这是一个脚本文件,它可以根据运行参数自动生成mrtg.cfg配置文件。 首先在Web服务器的DocumentRoot目录下创建一个子目录,用来存放mrtg生成的统计文件。在本案例中,假设apache httpd的Docum
17、entRoot在/var/www/html目录下,在该目录下创建mrtg子目录: # mkdir /var/www/html/mrtg其中的/var/www/html/mrtg为mrtg的工作目录。接下来生成mrtg配置文件:,使用 MRTG监测网络流量,# cfgmaker -global “WorkDir: /var/www/html/mrtg“ -global “Options_: growright,bits“ -ifref=ip -output /etc/mrtg.cfgpublic10.3.2.1 配置工具cfgmaker的参数说明如下: global表示随后的选项对所有指定的设备
18、都是有效的。 WorkDir用来指示MRTG的工作目录。 Options用来指定一些特定的选项,这里的“growright,bits”是用来指定默认options配置的,对于常见的应用来说默认options配置就可以满足需求了。 ifref用来指示使用什么选项来标识设备接口,可以指定的设备接口有nr、ip、eth、descr、name。nr表示使用在MIBII库中Interface的ifIndex来识别接口;ip表示使用ip地址识别接口;eth表示使用物理地址标识接口;descr表示使用描述信息来标识接口;name表示使用接口名来标识接口。 output用来指示配置文件存放的目录。 publi
19、c10.3.2.1表示监控IP地址为10.3.2.1的设备,采用public作为共同体名通过SNMP协议来监控设备10.3.2.1。,使用 MRTG监测网络流量,上述的配置范例会对10.3.2.1这台网络设备收集流量数据,并对输出图形设定bits及growright选项,同时在/etc/mrtg.cfg目录下产生mrtg.cfg设定文件,而所有产生的图形及网页都会放置在/var/www/html/mrtg目录下。 MRTG软件包中还有一个程序indexmaker,可将配置文件mrtg.cfg中每个Target的website做个简单的index.html文件。利用indexmaker程序生成监
20、测统计结果的首页: # ./indexmaker -output= /var/www/html/mrtg/index.html -title=主机流量统计表 /etc/mrtg.cfg 程序indexmaker按照给定的参数在/var/www/html/mrtg目录下输出一个标题为“主机流量统计表”的index.html文件。,使用 MRTG监测网络流量,运行MRTG 完成MRTG的设置后,使用如下的命令启动MRTG程序: # /usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg可以看到MRTG在其工作目录下创建了被监测设备的流量统计图和相应的HTML页面,为了让M
21、RTG持续地读取被监测设备的数据,并产生具有实效性的统计信息,通常让MRTG定时自动地运行。例如,设置MRTG每隔五分钟运行一次。以root身份运行命令crontab e,进入编辑状态后,添加内容如下: */5 * * * * /usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg保存所做的修改,退出编辑状态。通过浏览器访问地址http:/10.3.2.1/mrtg/,可以看到如图 101所示的MRTG生成的流量统计页面。,图中深蓝色曲线刻画了网络设备10.3.2.1上的某个端口随时间变化的输出流量曲线,而浅绿色曲线则是该端口输入流量随时间的变化图,图下方统计了流量的
22、峰值、平均值和当前值。 MRTG除了能够提供详细的每日流量记录,同时也能够以相同的视觉呈现方式产生过去七天,过去四周,以及过去12个月的流量记录。能够做到这点是因为MRTG把从路由器取得的所有数据都记录下来。这些记录会自动合计,所以不至于随着时间成长地太大,不过仍保留足够提供过去两年来流量趋势的信息。 MRTG并不仅限于监测流量,我们也可以利用MRTG来监测任何SNMP参数。我们甚至可以运用外部程序来收集想要用MRTG进行监控的数据,例如系统负载、登入数量等,或者将二或多项数据来源结合在单一图形内以利观察。与其他类似的软件相比,MRTG更加简便易用,适合于长期的网络监测任务,并提供了友好的用户
23、界面。与商业化网管软件相比,MRTG最大的优点在于它是免费的,同时其功能也在逐渐完善起来。,使用netperf测试网络性能,编译、安装netperf 最新版本的netperf程序可在其官方网站http:/perf.org/上下载。该站点提供与netperf程序相关的信息,包括程序的下载、使用手册、测试的基准以及用户的反馈等。 下载了netperf程序原代码后,首先解开程序原代码的压缩包,并切换至该目录下: # tar -zxvf netperf-2.4.1.tar.gz # cd netperf-2.4.1 在netperf-2.4.1目录下包含编译netperf应用程序所需的所有文件以及一些
24、为方便测试工作编写的脚本文件。netperf安装文件包含一个makefile文件,在编译应用程序之前需要根据安装环境的要求修改该文件。在安装的netperf应用程序中包含哪些功能,也通过修改该文件进行设置。编译netperf功能的参数选项如表 101所示。,-Ae 用针对于HP-UX系统的ANSI C编译器选项 -DDIRTY包含发送数据之前弄脏数据缓存的代码,该选项有助于使网络中正在进行的数据压缩无效 -DHISTOGRAM包含记录测试中请求/响应时间直方图的代码 -DINTERVALS包含在TCP和UDP测试中进行间隔测试的代码,此选项可避免在繁忙网络上丢失数据包 -DDO_DLPI包含测
25、试DLPI的代码 -DDO_UNIX包含测试UNIX域套接字的代码 -D$(LOG_FILE)指定netperf程序在启用调试功能时于何处输出调试结果 -DUSE_LOOPER使用looper或socker进程计算CPU性能 -DUSE_PSTAT对于HP-UX 10或更高版本的系统,使用pstat()函数计算CPU的性能,-DUSE_KSTAT对于Solaris2.X操作系统,使用kstat接口计算CPU的性能 -DUSE_PRO_STAT对于Linux系统,使用/proc/star文件确定CPU的利用率 -DDO_IPV6包含测试Ipv6套接字接口的代码 -U hpux用于在HP-UX系统
26、上编译netperf之时,也能够在HP-RT系统上运行 -DDO_DNS包含测试DNS服务器性能的代码 -DHAVE_SENDFILE包含使用sendfile()函数和send()函数测试发送数据的代码 -D_POSIX_SOURCE用于MPE/ix系统上的安装 -D_SOCKET_SOURCE用于MPE/ix系统上的安装 -DMPE用于MPE/ix系统上的安装,确定在netperf程序中需要包含哪些功能之后,编辑makefile文件,在相应的行上添加或删除这些功能。下面是一个在Linux操作系统下makefile文件的设置的实例: NETPERF_HOME = /opt/netperf LO
27、G_FILE = DEBUG_LOG_FILE=“/tmp/netperfdebug” CFLAGS = -o D$(LOG_FILE) DDIRTY DHISTOGRAM DUSE_PROC_STATDDOD_FIRST_BURSTNETPERF_HOME条目定义了netperf的安装目录为/opt/netperf。 LOG_FILE条目定义了应该将调试日志文件放在主机的什么位置。默认情况下,日志文件将放在/tmp目录中。系统重新启动后此目录将会被删除。 CFLAGS行中的DUSE_PROC_STAT选项,设置为在Linux操作系统下编译netperf。 修改makefile文件之后,必须使
28、用make命令编译源代码,并使用带有instMl选项的make命令安装它: # make# make install正确地编译和安装了netperf软件包后,必须配置运行netserver程序,接收来自netperf客户端的连接。,运行netserver,以独立模式运行netserver 要启动netserver,只要运行netserver的可执行文件: $/opt/netperf/netserver Starting netserver at port 12865 netserver启动后,它将指示使用哪个端口去监听进来的客户端连接,本实例中,netserver监听TCP端口12865。ne
29、tserver以后台模式运行,使用ps命令可以检测到该程序正在运行: $ps ax | grep netserver 17339 7 S 0:00/opt/netperf/netserver$ 从ps命令返回的结果可以看到,netserver程序正在运行,在系统中的进程ID(PID)为17339。以独立模式启动netserver,它将在后台运行,直到重新启动服务器或手动停止它。,要手动停止netserver,必须使用kill命令杀死netserver运行实例的PID号,如下所示: $ps ax | grep netserver 17339 7 S 0:00/usr/local/netperf/
30、netserver $kill-9 17339 $ps ax | grep netserver 17580 pts/1 S 0:00 grep netserver $ 停止netserver程序后,再次执行ps命令检测,返回结果的显示中已经没有该程序。,自动启动netserver,对于inetd方法,对探测到连接企图时要自动启动的netserver,必须为其在inetd.conf文件中创建一个条目,如下所示: netserver stream tcp nowait root /opt/netperf/netserver netservernetserver不使用受保护的TCP端口号,所以可以使
31、用系统中的任意用户启动,本例使用root用户启动netserver应用程序。 inetd.conf文件的netserver条目中指定了netserver可执行文件的位置,本实例为/opt/netperf。 xinetd配置文件的格式与inetd不同,对探测到连接企图时要自动启动的netserver,需要为其在/etc/services文件中创建一组说明,如下所示: socket_type=stream wait=no user=root server=/opt/netperf/netserver,运行netperf,根据作用范围的不同,netperf的命令行参数可以分为两大类:全局命令行参数、
32、测试相关的局部参数,两者之间使用“”分隔,如下所示: netperf global options- test-specific options 全局命令行选项指定的设置定义了应该执行哪种netperf测试,以及如何执行netperf测试。这些选项用于控制netperf测试的基本设置,对所有测试类型都有效。 全局命令行选项位于“-”前的global options部分,各全局参数选项之间没有次序的限制。,测试批量网络流量的性能,TCP_STREAM netperf的默认测试类型是TCP_STREAM批量传输测试。测试过程中,netperf根据设定的参数选项,向netserver主机发送批量的T
33、CP数据分组,以确定数据传输过程中的吞吐量,命令如下: ./netperf -H 10.3.2.1 -l 60 TCP STREAM TEST to 10.3.2.1 Recv Send SendSocket Socket Message Elapsed Size Size Size Time Throughputbytes bytes bytes secs. 10bits/sec16384 16384 16384 60.00 7.63,在本例中,使用全局命令行选项-H来指定远程netserver主机的IP地址为10.3.2.1,另一个选项-l用来设置测试持续的时间为60秒。从netperf的
34、TCP_STREAM测试结果输出中,我们得到以下的一些信息: 远端系统(netserver)使用大小为16384字节的socket接收缓存 本地系统(netperf)使用大小为16384字节的socket发送缓存 本地系统向远端系统发送的测试分组大小为16384字节 测试经历的时间为60秒 吞吐量的测试结果为7.63Mbps,缺省情况下,netperf主机发送的测试分组大小通常设置为本地系统所使用的套接字发送缓存的大小,从而减少本地的套接字传输对吞吐量计算的影响。若希望以特定的分组大小进行测试,可以修改相应的nerperf参数选项,TCP_STREAM方式下与测试相关的参数选项如表 103所示
35、: -s size设置本地系统的socket发送与接收缓存大小为size字节 -S size设置远端系统的socket发送与接收缓存大小为size字节 -m size设置本地系统发送测试分组的大小为size字节 -M size设置远端系统接收测试分组的大小为size字节 -D对本地与远端系统的socket设置TCP_NODELAY选项,通过修改与测试方式相关的参数选项,并观察测试结果的变化,可以确定是哪些因素在影响网络连接的吞吐量。测试方式相关的参数选项与全局参数选项之间用“-”进行分隔。例如,如果怀疑由于缺乏足够的缓存区空间,使得路由器无法转发大的数据包,就可以增加测试数据包的大小,以观察吞
36、吐量的变化: ./netperf -H 10.3.2.1 -l 60 - - -m 2048 TCP STREAM TEST to 10.3.2.1 Recv Send Send Socket Socket Message ElapsedSize Size Size Time Throughputbytes bytes bytes secs. 10bits/sec 16384 16384 2048 60.00 7.72,UDP_STREAM,UDP_STREAM方式使用与TCP_STREAM方式相同的局部命令行参数,可以使用-m来修改测试中使用分组的大小: ./netperf -t UDP_S
37、TREAM -H 10.3.2.1 - -m 1024 UDP UNIDIRECTIONAL SEND TEST to 10.3.2.1 Socket Message Elapsed Messages Size Size Time Okay Errors Throughputbytes bytes secs # # 106bits/sec 65535 1024 9.99 114127 0 91.35 41600 9.99 114122 9.57,UDP_STREAM方式的结果中有两行测试数据,第一行显示的是本地系统的发送统计,这里的吞吐量表示netperf向本地套接字发送分组的能力。但是,由于
38、UDP是不可靠的传输协议,发送出去的分组数量不一定等于接收到的分组数量。 第二行显示的是远端netserver主机接收的情况,在实际网络环境中,一般远端系统套接字缓存大小不同于本地系统的套接字缓存大小,而且由于UDP协议的不可靠性,远端系统的接收吞吐量要远远小于发送出去的吞吐量。,测试请求/响应模型的性能,在客户端/服务器的网络环境下,常见的网络流量类型是请求/响应(request/response)模型,如图 102图所示。请求/响应模型中的客户端网络设备通常会发送一些小的数据包,向服务器端查询有关信息,服务器端接收查询请求,经过处理后返回查询结果的数据,返回的查询结果数据一般都是较大的数据
39、信息。,TCP_RR,TCP_RR测试在一个TCP连接中发生的多次TCP 请求和响应时网络的性能,这种类型的测试模拟经常出现在数据库中的应用情况。数据库的客户端程序与服务器端程序建立一个TCP连接,然后在这个连接中传送数据库的多次交易过程。下面是一个简单的TCP_RR测试实例: ./netperf -t TCP_RR -H 10.3.2.1 -l 60 TCP REQUEST/RESPONSE TEST to 10.3.2.1 Local /Remote Socket Size Request Resp. Elapsed Trans. Send Recv Size Size Time Rate
40、 bytes Bytes bytes bytes secs. per sec 16384 87380 1 1 59.99 1995.32 16384 16384,TCP_RR测试的输出结果也是由两行组成。第一行显示本地系统的情况,第二行显示的是远端系统的信息。平均的交易率(transaction rate)为1995.32次/秒。注意,在默认的情况下,每次交易的请求数据包和响应数据包的大小都为1个字节,这不具有很大的实际意义。可以通过修改测试相关的参数来改变请求和响应数据包的大小,TCP_RR方式下的参数如表 104所示: -r req,resp设置请求和响应数据包的大小 -s size设置本
41、地系统的套接字发送与接收缓存大小为size字节 -S size设置远端系统的套接字发送与接收缓存大小为size字节 -D对本地与远端系统的socket设置TCP_NODELAY选项,通过使用-r参数,可以改变请求和响应数据包的大小,更改格式有: -r 32,设置请求数据包的大小为32字节,响应数据包的大小为1字节。 -r 1024,设置请求数据包的大小为1024字节,响应数据包的大小为1字节。 -r 32,1024,设置请求数据包的大小为32字节,响应数据包的大小为1024字节。,TCP_CRR,有些TCP事务要求每一个请求/响应都要建立一个新的TCP连接。最典型的应用就是HTTP,每个HTT
42、P事务都是在一个单独的TCP连接中进行的。使用这种技术的协议需要不断地建立新的TCP连接,并且在交易结束后删除TCP连接。 TCP_CRR方式用于测试在类似HTTP事务的处理过程中的网络性能。下面是一个简单的TCP_CRR测试实例:,./netperf -t TCP_CRR -H 10.3.2.1 l 60 TCP Connect/Request/Response TEST to 10.3.2.1 Local /Remote Socket Size Request Resp. Elapsed Trans. Send Recv Size Size Time Rate bytes Bytes by
43、tes bytes secs. per sec131070 131070 1 1 59.99 17.32 16384 16384 从上面的测试结果可以看到,即使是使用一个字节的请求和响应分组,事务处理率也明显地降低到每秒钟只有17.32个事务。这是因为对于每一个交易事务,都增加了创建和删除TCP连接的时间开销。TCP_CRR的测试相关参数选项与TCP_RR相同(如表 104所示),可以使用-r选项来更改请求和响应数据包的大小。,UDP_RR,UDP_RR方式测试使用UDP分组进行请求和响应的交易过程中的网络性能。下面是一个简单的UDP_CRR测试实例: ./netperf -t UDP_RR
44、-H 10.3.2.1 l 60 UDP REQUEST/RESPONSE TEST to 10.3.2.1 Local /Remote Socket Size Request Resp. Elapsed Trans. Send Recv Size Size Time Rate bytes Bytes bytes bytes secs. per sec65535 65535 1 1 59.99 2176.53 9216 41600,由于没有TCP连接所带来的负担,所以事务处理率有较大的提升,达到了每秒2176.53个事务。如果UDP的处理率与TCP的处理率差别非常大,则需要检查网络设备,确定在
45、网络中的路由器或其它的网络设备是否对UDP和 TCP采用不同的缓存空间和处理技术。,分析Linux操作系统的性能,用vmstat监视内存使用情况 虚拟内存统计工具vmstat(Virtual Memory Statistics),用于监视操作系统的虚拟内存、进程、CPU活动,对系统的整体情况进行统计。vmstat的语法如下: vmstat -V -n delay countvmstat 各参数的说明如表 105所示。 -V表示打印出版本信息 -n表示在周期性循环输出时,输出的头部信息仅显示一次delay是两次输出之间的延迟时间,如果不指定delay值,则仅输出最近一次启动以来的各性能指标的平均
46、值 count是按照给定的时间间隔进行统计的次数,如果不指定count值,但指定了delay值,则count的缺省值为无穷大,运行vmstat首先得到的统计报告展现的是从最近一次启动以来的各性能指标的平均值。其它的统计报告显示的是给定采样周期的统计值。vmstat的运行结果如下所示: # vmstat -n 5 5 procs memory swap io system cpur b swpd free inact active si so bi bo in cs us sy id wa0 0 10800 5396 10692 364576 3 9 74 284 173 223 4 1 92
47、40 0 10924 5436 7384 369696 22 51 399 118 261 334 18 2 61 190 0 11164 5504 8804 372052 49 163 182 430 388 543 47 3 31 191 0 12464 5492 11708 371968 5 305 154 558 380 510 45 3 30 212 0 12792 5544 15820 371716 145 143 315 446 434 644 43 4 27 27,vmstat输出结果中各字段的含义为: procs r:等待运行时间的进程数。 b:不可中断休眠的进程数。 w:被
48、交换出但仍可运行的进程数。 memory swpd:被使用的虚拟内存的总数(kB)。 free:空闲内存的总数(kB)。 buff:作为缓存使用的内存总数(kB)。 swap si:从磁盘交换区读入的内存总数(kB/s)。 so:写入磁盘交换区的内存总数(kB/s)。 io bi:输出到块设备的块数(blocks/s)。 bo:从块设备读取的块数(blocks/s)。 system in:每秒钟发生的中断数,包括系统时钟。 cs:每秒钟发生的转换数。The number of context switches per second. CPU us:用户时间的百分比。 sy:系统时间的百分比。 id:空闲时间的百分比。,