记一次HTTP劫持故障排查

问题起因:公司某内部系统,产品反馈,客服使用过程速度变慢,跳转过程中还会有一片留白页面出现

1、实际排查发现,这个问题不是必现的,大概每点击5次会出现 2次;查看后台ng日志,发现大量499错误;ng 499错误,有两种情况,一是请求时间过长,客户端主动关闭连接,

二是 同一个url请求间隔时间过短,直接被ng拒绝;随即检查ng配置,并对比了测试环境配置和正是环境配置(因为测试环境没有这个问题),

针对第一种情况,在测试环境特地sleep了10s;修改了某些配置,想屏蔽499错误;人有时候很奇怪,会刻意忽略某些情况,第一种排查完了之后,第二种就被忽略了;然而,一顿操作猛如虎,一看结果二百五;

 

2、引入外部某大神帮助,他提出可能是php错误,因为499 还有一种情况会出现,那就是php-fpm进程数不够,刚好我们线上环境因为某些原因起了3个版本的php,

遂关闭了其中一个无用的php版本,并开启了线上php 慢日志查询,然而,查看进程数也足够,所以并阮;

 

3、既然后端问题无法定位,那么就找代码本身是不是有问题,一看代码是,因为是多人合作的原因,有vue和jq混合,刚好查到因为某些情况这种混合编码可能会引起499错误,遂把vue代码全部删除,还是一样;

 

4、能想到的所有的情况都排查了,还是无效,内心是奔溃的,然而天无绝人之路,点着点着,突然发现,前端为什么会连续请求了我们同一个url 3次呢?想不明白,遂请求前端某大神帮助,他号称是世界上最温柔的男人;

一顿操作猛如虎,终于找到了,有段异常的js,flash.js ,上网找了一些文章,具体可查看 https://www.xuab.net/archives/36.html, 发现原来这个js在某些情况写会劫持我们的url( 具体可能是url中带// 的);

遂问网关,经确认网关那边确实有一套深信服的上网行为管理系统;这套系统在开启某些策略的情况,会在某些情况把这段js注入的我们请求页面中,谷歌浏览器有开启拦截广告的插件,就有几秒钟的留白;网管关闭这个策略后,回复正常;

 

总结,历时3个小时排查,终于找到问题,不容易;排查这类问题的时候,感觉方向没找准,浪费了不少时间,一开始应该不要从后端啊,代码去排查,应该从最明显的地方,前端去找,把最明显的问题找到原因,如果行不通,再一步步深入

posted @ 2019-10-12 11:06  queqp  阅读(396)  评论(0编辑  收藏  举报