问题描述
- http无response问题排查(面试被问到)
- 今天面试一家公司被问到说:项目部署在tomcat上,一直运行的好好的,
突然有一天发出的请求没有response回应了,就是http协议发出了request,却没有response返回。
已知查看了防火墙没有问题,程序不报错,tomcat进程和相应的端口都活的好好的,日志文件也没有什么异常,问下面该如何排查问题,有可能有那些原因?求解答!!!!!
解决方案
我遇到过这类问题,排查方式如下:
首先通过wireshare在服务器上进行抓包,通过抓包来分析相关问题。
1. 通过抓包分析,请求是否通过浏览器达到服务器,这个可以通过抓包中的IP进行查看,查看是否有当前的请求达到服务器,如果没有达到,那问题很明显就是发出请求后,没有达到服务器。
2. 如果抓包分析,服务器有相应的反应,但是没有下发response,这个时候就要推断tomcat服务是否存在问题,是否并发过大,导致出来不过来超时等等。
3. 如果抓包分析,服务器有相应的回应,并且response下发握手,但是没有相应的浏览器端,这个时候就要看服务器端的网络,这个也是可以通过抓包分析到底在那个网络端受到阻碍。
当然以上纯粹是个人的实验。抓包分析如 http://blog.csdn.net/zrzlj/article/details/6076219
解决方案二:
有可能是同一时间访问该应用的客户端数量巨大,达到Tomcate同时能处理的最大连接数,然后请求被丢弃了。
可以再过一段世界后再进行请求,看看是否能够正常获取response.
解决方案三:
这个可能是访问量大后台来不及及时响应每一个吧。
还有这天访问的人有没有脑子抽筋自己在地址栏写地址带自己的参数。
还有就是你访问的时候突然断网了之类的(这种情况很少但是不排除没有可能);
解决方案四:
觉得这个题目是考察从浏览器发出的请求都经过哪些环节才到达服务器的。**可能**的环节分析如下:
1)本地网络使用的DNS服务器故障,造成的无响应;
2)本地网出口设备故障或者负载过高;
3)服务端的接入服务器设备故障或者负载过高,如果有专门的接入设备的话;
4)四层交换设备故障或者负载过高;
5)http服务器故障或者负载过高,如果tomcat搭配了apche或者其他http服务器;
看看还有没有什么其他可能,欢迎补充完善。