开发测试过程中的网络问题处理总结和案例分析

发表于:2017-8-11 14:27

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

 作者:谢恒    来源:大商所行业测试中心

分享:
  3案例分析
  本节介绍4个在实际工作中遇到的网络排障或者分析的案例。由于简单的网络问题一般都可以通过第二节介绍的诊断树来判断,而是用抓包分析工具可以获取更多、更有价值的信息,因此本节重点介绍如何使用抓包工具进行问题的定位和分析。
  3.1. SSH为什么卡顿
  在某次交易系统测试过程中,交易系统部署在多台服务器上,由于需要对分布在不同服务器上的组件进行统一管理,管理脚本需通过SSH连接到其他服务器。但连接时会卡住一段时间,导致管理脚本无法有效工作。在排障过程中,首先复现问题,如图2。
  图2 远程SSH登录卡住
  可以看到,使用SSH登陆时,会卡在请求过程,经过测试,等待时间约为10秒,之后可以正常输入密码登陆。为了弄清楚在这10秒时间里发生了什么,我们在10.10.10.83(服务器,链路中间有NAT)上使用Wireshark抓包,同时在客户端尝试登陆。过滤后的结果如图3。
  图3 远程SSH登录时抓取的数据包
  由上图可以看到,从498号数据包开始,服务器停止应答,5秒钟后客户端担心连接丢失发送了一个keepAlive的数据包,之后又停顿了5秒,加起来刚好10秒。因此可以肯定服务器在498-654号包之间和655-804号包之间做了其他事情。查看654-805号包,得到图4结果。
  图4 卡顿过程中服务器在进行DNS查询
  至此我们已经获得真相,服务器在接到客户端的SSH请求之后,从688号包开始查询DNS,企图获得客户端的域名,而域名服务器没有响应,服务器在等待超时后允许客户端继续操作。因此,在等待的10秒里服务器是在查询DNS。通过修改服务器的sshd配置文件,将use_DNS设置为no之后,问题解决。
  3.2. 为什么ping不通
  在网络排障过程中,安全策略是需要重点考虑的。在某次交易系统测试中,测试人员发现一台服务器的某个IP地址无法从外网访问,但是同一网段的机器可以访问该IP。根据第二节介绍的分析流程,首先要弄清楚服务器是否收到了外网发送的请求。因此,使用tcpdump对该无法访问的网卡进行监听,同时使用外网机器(172.25.167.34)ping该IP地址(172.31.196.13),得到图5结果。
  图5 使用tcpdump抓取ping命令请求
  显然,从监听的数据包来看,服务器收到了外网请求,只是“不愿意”回复。因此,可以推断可能是服务端内部的策略限制,导致服务器不回复。通过搜索可知,在Linux中为了防止攻击者伪装源IP,当发现请求来源与非同一网段时,会尝试进行反向路径解析以确认该外部IP是否是伪装的,控制该功能的配置开关是rp_filter,如图6。
  图6 查看系统的rp_filter配置
  通过将该选项由严苛的(1)调整为非严苛的(2),该问题得到解决。
  3.3. 网页为什么有时打不开
  有时,开发测试人员也会碰到网络一会儿正常一会儿不能正常使用,或者连通速度很慢等问题。这类问题的产生通常由某些阈值导致,在阈值允许的范围内正常工作,超过阈值则会出现异常。在某次业务测试中,测试人员发现某服务的登陆页面需要尝试多次才能打开,或者浏览器没有响应,通过测试排除链路通讯和服务端端口监听问题。为了弄明白为什么登陆页面有时无法打开,需要先知道服务端有没有收到浏览器的请求。我们在服务端使用Wireshark抓包,同时在浏览器进行访问请求,结果如图7。
  图7 使用Wireshark抓取浏览器请求数据包
  从过滤结果可以看出,28058号包是服务端接收到了浏览器的请求,并在之后进行了一次成功的回应(28059号)。但从28126号包开始,服务端不断尝试重传(29620号、32617号等),说明浏览器没有接收到服务端的后续数据。考虑到成功传输的28059号数据包len=0,而重传的数据包len=1460,因此可以推测可能与数据包len有关。考虑到该Web服务运行在虚拟机上,因此可能是虚拟机的MTU值设置超过了网络限定值,导致数据包被截断。通过修改操作系统的MTU值,该问题被解决。
  3.4. 谁占用了我的文件
  合理的使用网络分析工具不仅可以快速定位网路问题,也可以帮助开发测试人员理解程序运行的逻辑和步骤。在某次业务测试中,测试人员发现系统在保存word文档时偶尔会发生错误,提示“文件被占用”。为了弄清楚是谁占用了哪个文件,我们先需要理清楚word如何保存文件。使用Wireshark监控网卡数据包,同时更新某word文档并保存在网络映射的磁盘中,获得如图8的结果。 
  图8 使用Wireshark抓取Word保存文件时的数据包
  从网络数据包的通讯过程片段可以看出,当需要保存名为temp.docx的文件时,word会先尝试删除名为8CA809E6.tmp的文件(842号数据包),当对方告知这个文件不存在时(843号),word程序先将旧文件保存为8CA809E6.tmp(844号),然后确认这个操作成功(848-849号),成功后,再将之前已经保存好的新文件DF165639.tmp重命名为temp.docx(850号)。
  由此可知,word程序的保存过程设计的较为复杂,需要生成两个临时文件。因此考虑该问题是临时文件被占用所导致,如杀毒软件等。事实上,通过检查杀毒程序的配置,证明了该推测。
  通过以上案例可以看出,多方面的配置和策略都可能引起网络通讯问题,在无法直接判断问题时,可以使用抓包工具等帮助判断。同时,合理的使用这些工具,也可以帮助理解问题发生的本质原因,有利于提高开发测试质量。
  4总结
  本文总结了在交易系统及其业务系统的开发、测试过程中的网络问题,梳理了问题分析思路和诊断步骤。虽然这些问题都是在交易系统相关的工作中发现的,但具有普适性。同时,本文着重介绍了如何使用抓包工具进行问题诊断和分析,对解决类似问题具有借鉴作用。 
22/2<12
100家互联网大公司java笔试题汇总,填问卷领取~

精彩评论

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号