go的http服務報錯"accept4: too many open files"

        執行命令"netstat -ano |grep 8300"後發現有不少"tcp6     210      0 127.0.0.1:8300          127.0.0.1:14677         CLOSE_WAIT  off (0.00/0/0)",服務器

而後進入到服務的log目錄下tail後發現一直打印"2018/05/25 14:57:49 http: Accept error: accept tcp [::]:8300: accept4: too many open files; retrying in 1s"。tcp

關於CLOSE_WAIT搜到文章<一次服務端大量CLOSE_WAIT問題的解決>,詳細描述了問題產生的緣由,主要就是服務端響應客戶端請求所打開的資源沒有及時釋放。post

而後就關鍵字"accept4: too many open files; retrying in 1s"及"http: Accept error: accept tcp"搜索到文章<Go net/http 超時指導>、<go語言實現服務器接收http請求以及出現泄漏時的解決方案>,spa

其中後一篇文章指出了一種忘記關閉致使的資源泄露,結合前一篇文章給http服務設置超時,後面就不會出現大量CLOSE_WAIT了,文章<go語言 Accept error: accept tcp [::]:5551: too many open files;>資源

指出"在一個for循環以內,若是是直接http.post那麼,這個http.post所使用的資源尚未釋放,下一次的http.post請求已經開始,形成資源沒法快速釋放,最終拋出異常",可是暫時尚未看到for循環

這個statChannel有什麼泄露的地方。file

相關文章
相關標籤/搜索