once do, do it well

昨天出現一個生產問題。我們的channel系統代碼裏,調用其中一個三方服務商的http接口時未設置超時時間。碰巧昨天出現一筆http請求持續數小時始終無響應,加之程序是單線程處理交易請求,就出現因爲線程一直處於RUNNABLE狀態而導致系統生產能力嚴重下降。

現在說這個結論很easy,而昨天排查這個問題卻很是花費了許多周折。

那麼,解決這個問題,自然是爲這個服務商的http請求設置合理的超時時間。

組內的小夥很快fix了這段代碼,爲方法裏的http請求設置了connectTimeout和socketTimeout。

 

 

 

發現問題,上來就解決,往往是低效的方式。

爲什麼這麼說呢?

曾經我們系統化地調整過channel裏的對外http連接的超時時間。而怎麼單單遺漏了這個服務商呢?原來,查看代碼才發現,是這個服務商並沒有依賴我們的公共的http util類,而是單獨寫的http post方法,藏匿得比較深。

consequently,once do,do it well。通過review代碼後,我改成了讓這個服務商也調用公共的http util來實現http通信。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章