如何解决过多打开文件Nginx错误
如果你运行Nginx作为前端到Artifactory,你可能会碰到你的OS /Nginx的默认打开文件描述符限制.当这种情况发生时,Nginx的error.log可能会显示如下内容:
2010/04/16 13:24:16 [crit] 21974#0: *3188937 open() " /usr/local/nginx/.." failed(24:太多打开的文件),客户端:…服务器:foo.com,请求:" GET /artifactory/..HTTP/1.1 ", upstream: " http://localhost:8081/artifactory..,主持人:“foo.com”
你可以生成一个列表的默认的限制对于给定Linux执行cat /proc/$PID/limits
猫/proc/$ PID /限制
请注意:使用Nginx缓冲可能会给Artifactory带来一些问题。因此,你可以考虑关掉proxy_request缓冲。更多信息请查阅在这里.
默认情况下,Nginx使用proxy_buffering.这意味着当客户端发出请求时,Nginx将上游响应负载缓冲到磁盘。通常,Nginx会将这些文件保存到一个临时路径中,并在请求完成后自行清理。然而,像上面提到的错误会导致Nginx停止清理这些临时文件。因此,你的磁盘空间可能被填满非常快,只有当你关闭Nginx进程。
命令:
lof -a +L1 /var
可能会显示一些带有术语的文件描述符(删除)就在他们旁边。它们的存在在技术上是正常的。但是,如果您看到一个“已删除”的条目在一段时间后没有被清理,则可能有问题。这是一个问题,可以阻止您的操作系统能够释放正在被未清理的文件句柄消耗的磁盘空间。
如果你在使用systemd,请按照以下步骤在这里增加你的Nginx最大打开文件设置。
发布日期:2017年10月3日
最后更新:2021年1月6日
关键词:Nginx,代理请求缓冲,代理缓冲