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有什么泄露的地方。
轉載于:https://www.cnblogs.com/wongdu2014/p/9089068.html
總結
以上是生活随笔為你收集整理的go的http服务报错accept4: too many open files的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring框架深入(四)--Sprin
- 下一篇: w10查询自己电脑ip