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"。

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

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

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

指出"在一個for循環之內,如果是直接http.post那么,這個http.post所使用的資源還沒有釋放,下一次的http.post請求已經開始,造成資源無法快速釋放,最終拋出異常",但是暫時還沒有看到

這個statChannel有什么泄露的地方。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM