马提尼Go服务器内置的网络爬虫得到太多的打开文件后,几个小时



我构建了一个网络爬虫,它提供了一些关于它的发现的http信息。爬虫作为一个go例程运行,martini运行web服务器。过了一会儿,我开始得到

2014/08/01 10:23:51 http: Accept error: accept tcp [::]:3000: too many open files; retrying in 1s.

我读到我应该尝试增加最大打开文件,只有我是这个级别的配置新手,不知道如何做到这一点。我在Ubuntu 14.04上运行这个程序。如何更改马提尼服务器的最大打开文件,谢谢。

确保不要忘记关闭来自http.Get的响应,就像在本期中一样。

这个例子展示了一个更好的响应管理:

    resp, _ := http.Get("http://127.0.0.1:3000"+path)
    s, _ := ioutil.ReadAll(resp.Body)
    resp.Body.Close()

如果问题仍然存在,那么您可以尝试增加/etc/sysctl.conf中的fs.file-max

我通过将以下代码移出函数来解决这个问题:

var tr = &http.Transport{
    TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
var client = &http.Client{Transport: tr}

最新更新