目前工作上遇到API接口資源佔滿導致斷線
有點擲筊文的問法,只有這句話是線索,
就抱著猜猜樂的心情來回答吧。
猜測應該是 http api的形式,每個工作就打一次 http api,完成後結束這條。
你認為有release,應該是指照這作法 不應該滿線。
一條 http api 中斷後,TCP 狀態會是TIME_WAIT,再等一下才會真的消失。
也就是一個資源,建立連線到完成工作中斷進入TIME_WAIT到真正消失才可以再空出TCP連線扣打,
其這個過程也是有點時間需要消化。
常常會遇到一個問題,使用者跟寫CODE者,不太清楚的狀況,
導致 增加速度>消化速度=慢慢增加佔用量,直到上限,
這種狀況一開始沒感覺,常常都是過一陣子才出問題。
症狀就是無法產生TCP連入連出,下指令看到大量的TIME_WAIT。
審視大部分的API執行時,從起頭到TIME_WAIT消失要多久,
若你屬於時時都在頻率擊發api的,那擊發頻率間隔設定上,要留意增加速度不可大於消化速度。
另外查看作業系統是否還有可以調整減少TIME_WAIT的持續時間跟合理追加增加TCP可用上限空間,有就調整,使發生機率降低。
偶而路過看到寫code設計師跟使用設定人以及用戶需求,
不懂作業系統的網路TCP生命週期下,
寫出的專案執行上鬧過滿多笑話的(老牌軟體公司也一樣會犯這種錯)
如果沒有判斷出來問題,最後就是消極的設定定期重開機解決。
如果是只是記憶體資源占滿,就直接把資源異常狀態的用量回給你的廠商看吧...