昨天出現一個生產問題,我們的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通信,

當看到一些不好的代碼時,會發現我還算優秀;當看到優秀的代碼時,也才意識到持續學習的重要!--buguge
本文來自博客園,轉載請注明原文鏈接:https://www.cnblogs.com/buguge/p/17307910.html
<style>hr.signhr{width:80%;margin:0 auto;border: 0;height: 4px;background-image: linear-gradient(to right, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0))}</style>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/549744.html
標籤:其他
