设为首页 收藏本站
查看: 1329|回复: 0

[经验分享] WEB网络问题的排查【转】

[复制链接]
发表于 2017-6-22 08:54:24 | 显示全部楼层 |阅读模式
  Browser/Server结构主要是利用了不断成熟的Web浏览器技术:结合浏览器的多种脚本语言和ActiveX技术,用通用浏览器实现原来需要复杂专用软件才能实现的强大功能,同时节约了开发成本。
B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件,只要有一台能上网的电脑就能使用,客户端零安装、零维护。系统的扩展非常容易。
  大家在测试过程中经常会遇到例如首次部署后网页无法打开或者样式无法加载等问题,本文给大家简单介绍一点网络问题排查方面的知识。

【HTTP协议及连接的建立】  HTTP( Hyper Text Transfer Protocol超文本传输协议的缩写)是一个客户端和服务器端请求和应答的标准(TCP)。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。
如下图:
DSC0000.png

  ▲一次HTTP操作称为一个事务,其工作过程可分为四步:
1.首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。
2.建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
3.服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
4.客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
  
▲HTTP连接的建立又可分为如下步骤:
1)浏览器分析链接的URL
2)系统查找HOSTS文件,有则根据文件内容获取服务器ip,转到第5步
3)浏览器向DNS请求解析该URL的ip
4)域名系统DNS解析出该URL的ip地址为xxx
5)浏览器与服务器 建立TCP连接 (服务器ip地址是xxx,端口是80)
6)浏览器发出取文件命令
7)服务器给出响应,把文件发送给浏览器
8)释放TCP连接
9)浏览器显示文本

【页面无法打开问题排查】  页面无法打开这类问题在系统初次部署时经常遇到,我们可以根据上节所介绍的HTTP建立连接的步骤逐步进行排查。
  例如某项目打开页面展示如下:
DSC0001.jpg

  1.URL链接
  首先,需要确认URL地址正确。一个完整的URL请求一般包括基本URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件名。
  如某URL地址为http://www.hello.com/demo/helloworld.htm,其中http表示使用的是http协议,www.hello.com为服务器名称,/demo为相对路径,hello.htm为请求的文件名。确认该url地址请求的文件是否存在,我们就可以在工程目录中查找hellworld.htm(或helloworld.vm)文件,看该文件是否存在。
  ▲实际问题排查
我们在菜单”交易大厅”链接上,点击右键,查看属性如下图:
DSC0002.jpg

  图中URL指出,这个菜单访问的URL地址为
  http://xxxxx.xxxx.xx/delegate//delegate/listing/index_hall.htm
  xxxxx.xxxx.xx/delegate为该系统固定域名,delegate/listing/index_hall.htm为文件相对位置。然后,在工程目录下查找该文件。
DSC0003.jpg

  图中展示文件名与该文件相对位置匹配,可以排除无法访问是由于URL地址中文件不存在导致。
  2.HOSTS文件
浏览器在解析URL之后,就会根据URL中的服务器名称建立链接。例如上文的www.hello.com这个服务器名称,浏览器是怎样解析成一个ip地址从而建立链接的呢?
操作系统规定,在进行DNS请求以前,先检查系自己的Hosts文件中是否有这个域名和IP的映射关系。如果有,则直接访问这个IP地址指定的网络位置,如果没有,再向已知的DNS服务器提出域名解析请求。DNS服务器中保存有该网络中所有主机的域名和对应IP地址,并并具有将域名转换为IP地址功能。
所以我们排查的第二个节点就是本机的HOSTS文件。
在Windows NT/2000/XP/Vista/7/8(即微软NT系列操作系统)中,HOSTS文件默认位置为%SystemRoot%\system32\drivers\etc\;在Linux及其他类Unix操作系统中HOSTS文件默认位置为/etc。
HOSTS文件内容格式为:IP+空格+域名,域名可以有多个,中间以空格分隔。需要注意相同域名以首次出现映射规则为准。文件修改保存后生效,但是由于各浏览器存在缓存,所以不一定立即生效。一般重启浏览器后,可以正确跳转。
  
▲ 实际问题排查
我们测试的程序部署在内网环境,需要进行HOSTS。检查本地HOSTS文件,相关配置如下:
DSC0004.jpg
图中标明域名xxxxx.xxxx.xx已映射到IP地址xx.xx.xx.xx.我们再通过命令行进行检查:


DSC0005.jpg   可以排除HOSTS文件配置不正确或网络存在问题导致页面无法打开。
  3.网络
如果在上一步最后检查时,提示请求超时,有可能是本机与服务器之间存在网络问题。我们排查的第三个节点就是网络是否正常。
首先,需要排除是否本机与服务器不在同一个网络环境,比如一个在内网,一个在公网这种情况。
另外,可能是服务器IP地址发生了变化。查看服务器IP可在命令行下使用ipconfig(linux为ifconfig,需root用户),如果发现IP发生变化,需要检查IP是否为静态IP。
  最后,需要检查防火墙是否关闭或配置是否正确。
  4.监听端口
在排除了网络问题后,我们的URL请求就已经到达了服务器进行处理,下一个排查的节点就是服务是否存在以及端口是否正确打开。
如果服务启动时,提示Socket bind failed:[XXXX],则通常为XXXX端口正在被占用。查看该端口被哪个进程占用,可以在服务器上输入netstat –anp|grep 端口号(windows为在命令行中输入netstat –ano|find “端口号”),如图2、图3
DSC0006.jpg

  图2
DSC0007.jpg

  图3
  红框内为实际占用程序pid,LISTEN/LISTENING表示为监听端口。获取到pid后,可以考虑关闭该进程或者修改服务使用端口。
  
▲实际问题排查
我们到55.82服务器上对进程所对应的端口,现在已知应用占用的端口是28080,输入netstat –anp|grep 28080:
DSC0008.jpg

  得到进程PID为4580,再查看4580进程:
DSC0009.jpg

  得到进程PID为4580,再查看4580进程:
DSC00010.jpg 进程与需要连接的服务匹配,可以排除端口占用导致页面无法打开。

  
5.其他
经过上面一系列的排查发现好像各个环节都是正常的,那还有哪些问题可以会导致页面无法打开?
上一步排查过程中,我们可以发现该tomcat使用的端口为28080,在实际访问的URL(http://trade.cfae.cn/delegate//delegate/listing/index_hall.htm)中,我们没有看到指定访问端口为28080的相关内容,这也许就是问题的原因。
在HTTP链接中,如果访问时没有指定访问端口,则通过80端口进行链接,那么整个部署中,肯定存在某个环节将发送到80端口的请求转发到28080端口。因此,下一步我们就来检查下Apache配置,看是否是使用了反向代理机制进行转发并导致页面无法打开。
  
▲实际问题排查
在55.82服务器上,打开/etc/httpd/conf/httpd.conf文件,发现有如下配置:

DSC00011.jpg   这段配置,说明Apache会根据http://xxxxx.xxxx.xx/delegate 中的/delegate的请求转发到xxxxx.xxxx.xx。前面已经说过,xxxxx.xxxx.xx是内网的域名,那么服务器进行请求时,同样要在HOSTS文件中进行配置,那再检查下服务器上的HOSTS文件:
DSC00012.jpg

  服务器上并没有进行HOSTS配置。下面我们可以通过修改Apache配置或者修改HOSTS文件进行处理。修改Apache配置可以将配置段中xxxxx.xxxx.xx替换为127.0.0.1,保存后重启httpd服务;修改HOSTS文件可以添加127.0.0.1xxxxx.xxxx.xx后保存。
  在这里,采用了第二种方法:
DSC00013.jpg

  然后再进行访问,页面成功打开。
DSC00014.jpg

  【开发人员工具的使用】
  在高版本的IE浏览器中,集成了开发人员工具(F12)。这个工具,可以协助我们进行一些问题的排查。
1.页面内容长时间无法加载
有一次,某个部署在内网的项目因需要,映射到了外网,但是映射的时候采用的是端口转换的方式,也就是应用实际使用的端口是9040,映射到外网使用的端口是9433。映射之后,发现页面可以打开,但是打开非常缓慢,而且大部分元素、样式等无法显示。
遇到这种情况,我们可以通过开发人员工具中的网络分析进行查看。低版本IE可通过安装HttpWatch插件查看。
按F12打开开发人员工具,选择网络,点击启用网络流量获取。输入域名后回车,此时下面会显示浏览器与服务器之间的数据交互。
  如下图:

DSC00015.jpg
DSC00016.jpg

  图中可以看出,大量请求结果显示为已挂起,再检查下这些请求的URL地址,发现请求的端口是内网的端口号,所以导致这些样式无法展示。如果程序是通过配置方式定义的端口号,修改下相应配置,再重启进程就可以避免这种情况。
  
2.网页前台校验规则查看
通常,在测试一些页面时,前台会对输入项的内容进行校验,比如注册页面的联系方式、邮箱、地址长度等。我们可以使用开发人员工具,可以方便快捷的查看某些元素的校验规则,从而快速的查找出校验规则是否存在问题。
比如输入框的长度限制,打开开发人员工具,选中DOM资源管理器,通过选择输入元素,对前台输入校验进行检查。
  如下图:

DSC00017.jpg   可以看到这里对项目名称进行了最大输入长度的限制为40,再根据数据库中相应字段的长度,就能够判断出是否可能存在问题。
  再例如检查手机号码的校验
  如下图:

DSC00018.jpg   图中看到对手机号码校验规则是'^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1})|(14[0-9]{1}))+\\d{8})$'。
  当然有是否这些校验是写在script里面,也有时候是在后台校验。

【总结】  B/S架构的项目在首次部署完成后,经常会遇到由于配置问题导致的页面无法打开。遇到这种情况后,大家首先要对HTTP链接及URL访问有一个比较完整的认识。然后,根据项目实际情况梳理出网络拓扑,并对关键节点一一排查。最终,找到导致页面无法打开的真正原因。
在实际的测试过程中,大家也可以多尝试使用下IE浏览器集成的开发人员工具(一些浏览器也有相应功能,如火狐浏览器),有助于提高测试效率,特别是针对一些页面校验问题。
  转自:http://rdc.hundsun.com/portal/article/652.html?from=KFZTT&hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-386695-1-1.html 上篇帖子: CV:object recognition(DRN) 下篇帖子: H5新手教程,小白来看看。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表