記一次HTTP劫持故障排查

問題原由:公司某內部系統,產品反饋,客服使用過程速度變慢,跳轉過程當中還會有一片留白頁面出現php

一、實際排查發現,這個問題不是必現的,大概每點擊5次會出現 2次;查看後臺ng日誌,發現大量499錯誤;ng 499錯誤,有兩種狀況,一是請求時間過長,客戶端主動關閉鏈接,html

二是 同一個url請求間隔時間太短,直接被ng拒絕;隨即檢查ng配置,並對比了測試環境配置和正是環境配置(由於測試環境沒有這個問題),前端

針對第一種狀況,在測試環境特意sleep了10s;修改了某些配置,想屏蔽499錯誤;人有時候很奇怪,會刻意忽略某些狀況,第一種排查完了以後,第二種就被忽略了;然而,一頓操做猛如虎,一看結果二百五;vue

 

二、引入外部某大神幫助,他提出多是php錯誤,由於499 還有一種狀況會出現,那就是php-fpm進程數不夠,恰好咱們線上環境由於某些緣由起了3個版本的php,後端

遂關閉了其中一個無用的php版本,並開啓了線上php 慢日誌查詢,然而,查看進程數也足夠,因此並阮;瀏覽器

 

三、既而後端問題沒法定位,那麼就找代碼自己是否是有問題,一看代碼是,由於是多人合做的緣由,有vue和jq混合,恰好查到由於某些狀況這種混合編碼可能會引發499錯誤,遂把vue代碼所有刪除,仍是同樣;php-fpm

 

四、能想到的全部的狀況都排查了,仍是無效,心裏是奔潰的,然而天無絕人之路,點着點着,忽然發現,前端爲何會連續請求了咱們同一個url 3次呢?想不明白,遂請求前端某大神幫助,他號稱是世界上最溫柔的男人;測試

一頓操做猛如虎,終於找到了,有段異常的js,flash.js ,上網找了一些文章,具體可查看 https://www.xuab.net/archives/36.html, 發現原來這個js在某些狀況寫會劫持咱們的url( 具體多是url中帶// 的);編碼

遂問網關,經確認網關那邊確實有一套深信服的上網行爲管理系統;這套系統在開啓某些策略的狀況,會在某些狀況把這段js注入的咱們請求頁面中,谷歌瀏覽器有開啓攔截廣告的插件,就有幾秒鐘的留白;網管關閉這個策略後,回覆正常;url

 

總結,歷時3個小時排查,終於找到問題,不容易;排查這類問題的時候,感受方向沒找準,浪費了很多時間,一開始應該不要從後端啊,代碼去排查,應該從最明顯的地方,前端去找,把最明顯的問題找到緣由,若是行不通,再一步步深刻

相關文章
相關標籤/搜索