接受tcp [::]:accept4:太多的打开文件;在1秒内重试



我们在golang上运行了一个API,这会有很高的流量,突然我们今天有以下错误

http:接受错误:接受tcp [::]:8443:accept4:太多打开 文件;重试1s

我之前检查过的几件事是,最大fd大小,每个过程的大小为16k,但由于某种原因,它达到了最大值而没有提供大量细节。

是否有任何gotool或提示可以检查我如何找到可能导致此问题的什么?

我不确定是否存在GO工具来帮助解决此类问题。代码中可能有一些连接泄漏。

消耗http.Response的有效载荷后,可能会发生的常见泄漏是忘记致电resp.Body.Close()

闲置连接可能是另一个可能的原因。根据HTTP软件包文档:

默认情况下,将未来重复使用的传输库连接。访问许多主机时,这可能会留下许多开放连接。可以使用Transport的Clossidleconnections方法和MaxidleConnsperhost和DisableSeepalives领域来管理此行为。

如果是这样,您可以尝试在Transport句柄上明确调用CloseIdleConnections,或者减少MaxIdleConnsPerHost值。

最新更新