剛剛作完一個網站項目,網站的顯示數據是經過遠程服務獲取的,過程比較「曲折」,以下圖所示。php
項目使用spring mvc來開發,其中須要請求rest服務,使用spring提供的RestTemplate類能夠很方便的實現rest請求發送和響應結果接收。中間系統屬於老版本的系統,採用的是php開發的。在測試過程當中,發現網站上的數據顯示極其不穩定,時不時地提示遠程數據獲取失敗。使用http監聽工具進行了追蹤,是中間系統向網站響應的結果是連接超時,致使了網站解析響應結果時沒有獲取到數據。將中間系統的超時閥值調大後,中間系統能夠正確地響應數據,但是網站仍然沒法解析數據,後來發現RestTemplate的ReadTimeout設置的值過低,致使未能接受數據。同時將RestTemplate的ReadTimeout的值調大後,一切運行正常。spring
這裏記錄、強調的重要一點使咱們開發人員的主觀意識錯誤,致使於排除錯誤時未能快速定位錯誤緣由。爲何這麼說呢?網站使用的是spring mvc,RestTemplate的ReadTimeout值設置的爲5秒,開發人員我的覺着拿到數據爲null的響應沒有等到5秒啊,怎麼會超時呢?一樣,中間系統是php開發的,而php開發人員設置的超時時間爲15秒,也是我的覺着15秒拿數據怎麼也夠了呀,怎麼會超時呢?mvc
讓真實數據和實踐來講話!http監聽工具能夠查看每次請求的timeline,兩個系統的開發人員分別仔細觀察了各自請求的時間,平均在19秒左右!工具
說到這裏,其實最想說明是,不要被咱們本身的主觀意識矇蔽了雙眼。爲何會出現上述的現象?在項目開發後期,特別是時間吃緊的情況下,開發人員在調試諸多問題的過程當中,很容易地就想固然了,忽略瞭解決問題的本質。只有經過對真實數據的分析及實踐操做,才能準確快速地找到問題緣由!測試
因此,在任何狀況下,必定要養成冷靜思考的好習慣,必定要充分利用調試工具的功能,千萬不要本身覺着!網站