查找网络瓶颈的原因

发表于:2012-5-03 11:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:思齐 译    来源:51Testing软件测试网原创

  网络的水平在很多时候会影响到性能水平。带宽水平的大小往往是网络瓶颈的罪魁祸首。假设你断定糟糕的性能表现是由于应用程序的网络组件,那么比起宽带的影响网络组件的糟糕性能更让人头疼。最有可能的情况是,应用程序的网络组件本身的原因,以及其处理分布数据的处理功能处引起了这些问题。

  一个特定网络的整体速度是有限的,其取决于(a)最慢的环节和(b)连接链的长度。识别最慢的链接是非常困难的,由于每天不同时间或不同通信路径可能是在变化的,所有有时候多次测试后得到的结果(所发现的最慢链接)也有可能是不一致的。Network通信,首先从一个应用程序发起TCP/IP堆栈请求,然后通过硬件接口,调制解调器,电话线,另一个调制解调器,到一个服务供给者的路由器,然后再通过多次严重拥挤的数据线以及各种高承载力的路由器,以及各种各样不同的配置,终于达到了另一台电脑的硬件端口,然后反应到应用程序的TCP/IP堆栈处,于是一次艰难的通信就这样完成了。一个典型的网络下载请求的过程大概就是这样子的。另外,这个过程中将会有可能发生,丢包、无法应答,多次重复请求,繁忙的连接请求等等情况。

  糟糕的网络性能除应用程序本身,还有很多其它因素的影响。一个比较好的选择是:向你的用户真实地报告应用程序在各种网络连接速度下的性能状况。测试从本地到不同目的地的数据传输速度,数据传输速度包括:测试机->到另一台本地网络上机器->互联网服务提供商->互联网中的其它服务->目标服务器和任何其它目的地适当的应用。这种类型的报告,可以告诉用户对于应用程序来说,糟糕的宽带是其瓶颈,如果你感觉应用程序的性能受限与网络连接真正的速度,而不是应用程序其本身的原因,那么这个报告对于用户解决他们的宽带问题将非常有帮助。

  延迟时间

  延迟时间不同于网络的承接能力(也就是常说的带宽),带宽是指有多少数据可以在给定的时间内发送给通信信道接收地或者说在在通信过程中最低带宽链接限制了多少数据被传输。延迟时间是指一个特定的数据包从通信通道的一端到另一个特定的数据包所共花费的时间。带宽的大小会告诉您,您的应用程序在操作过程中数据量的传输量的限制,这个限制将影响到你的应用程序的性能。如果带宽不是瓶颈,那么延迟时间往往是最终用户看到的真实性能。

  在大多数情况下,特别是互联网流量,延迟时间需要重点关注,您可以使用 ping 命令基本确定一个数据包在两台电脑中的延迟时间(请参阅“理解网络 — —如何使用ping命令?

  http://www.loadrunnertnt.com/analyze/detecting-network-bottlenecks/index.php?option=com_content&view=article&id=75:understanding-network-how-ping-works&catid=34:concepts&Itemid=41)但是,这个传输时间只是对于基础协议(ICMP数据包)的通信时间。如果通信通道被阻塞或重连(该现象经常出现在互联网大规模流量环境上),应用程序的一次数据包传输实际上可能有多个往返。

  知道这些限制是非常重要的,不过即是因为这些限制也经常可能是调整应用程序,如尽量减少由 (a) 数据包传输的数量,(B) 缓存和 (c) 重新设计应用程序的通信协议,以力求达到减少会话模式的要求。在网络级别,您需要监视 (使用 ping 和 netstat 实用程序或sniffer) 并统计数据包的传输,并应考虑调整network的参数以减少重连(如果你有调整网络参数的权力)。

  TCP/IP 堆栈

  TCP/IP 堆栈是负责翻译应用程序级网络的每个请求的 (发送、 接收、 连接、 等等),通过传输层和网线的传输最终又回到的应用程序上面。就堆栈本身来说,在性能测试前已经伴随操作系统而完成(在一台很快的电脑上面有一个很慢的network与一个很快的network效果差别是很大的),它不像TCP/IP堆栈一样会成为一个性能问题。

  ……………………

  查看全文请点击下载:http://www.51testing.com/html/56/n-811856.html

  丢包和重连都是网络挤塞造成的典型问题,你需要为此原因不断地努力寻找。丢包问题往往是由于路由过载承担,以及一些数据包在路由器的缓冲区中出现了溢出而造成的。这就意味着,你需要调整协议,并让其重新发送数据包。使用Netstat命令可以统计传送的目的地和其它数据统计,可以标识出此类问题,而重连可能是由于数据包太大而造成的。

  DNS查找

  DNS查找是造成网络性能瓶颈的一个重要原因,但是这个原因却经常被忽略。当你的应用程序尝试连接到网络地址如foo.bar.somthing.org时,你的应用程序首先将foo.bar.something.org转换为4个字节的IP地址,比如10.33.6.45。这个IP地址是路由器进行通信的实际地址。

  DNS的翻译工作如下:

  1、应用程序以文本字符串的方式发送域名地址(如foo.bar.something.org)到DNS服务器。

  2、DNS服务器通过高速缓存查找该域名所对应的IP地址。如果在缓存中没有找到这个地址,它将在其自身的DNS服务器(往往是在互联网域名更上一个层次结构中查找),直到这个名称被找到。这个解析 IP 地址然后会被添加到DNS服务器的高速缓存中。

  3、这个IP地址被返回到应用程序所在的计算机。

  4、应用程序使用这个IP地址连接到所需要的服务终节点。

  一旦建立了连接,就不需要重连,但是如果发起了另外一个不同的连接,那么就需要重新查找。

  你可以改善这种情况,如运行DNS在本地机器上,或本地局域网服务器上,当然如果是在局域网内的话。DNS服务器可以作为“缓存”服务器来运行,如果你重新启动机器的话它将被重置。对于频繁的连接,本地DNS 服务器可以起到明显的加速。NSlookUp命令对于调查系统DNS是如何翻译的非常有帮助。

  查看全文请点击下载:http://www.51testing.com/html/56/n-811856.html

  版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号