此文為記錄帖,如果錯誤,煩請指正
前提:在Linux服務器中通過Docker部署了服務(WebAPI,使用了swaggerui可視化工具),並使用k8s管理docker容器。
k8s每3秒訪問swaggerui頁面:https://xx.xxx.xxx:80/index.html,設置3秒的超時時間,連續5次訪問失敗,則認為該服務失效,k8s會 kill 此服務。
問題:服務被k8s關閉了
可能因素:
(1)代碼因素:訪問過多時,等待響應太久(目前設置的100秒),連接一直沒有釋放,就導致阻塞后續的請求
(2)服務器因素:在 linux系統中 一個請求對應操作系統的一個文件描述符,描述符操作系統默認的是4096個,描述符全部占用之后,就無法接收后續的請求,等待前面釋放連接
解決方案:
(1)優化鏡像,描述符增加至65535個,會在一定程度上避免這個問題,但弊端是耗費一定的服務器資源
(2)縮短 http請求的超時時間限制(普遍設置為5-10s)