nginx 在反向代理到 Apache 时对 /var/lib/nginx/proxy 文件的 I/O 使用率非常高

nginx 在反向代理到 Apache 时对 /var/lib/nginx/proxy 文件的 I/O 使用率非常高

我的家庭服务器(运行在戴尔低配置机器上,32 GB RAM,四核 CPU)运行 32 位 Ubuntu 18.04.4,使用 nginx 1.14.0 反向代理各种服务 - Zoneminder、Nextcloud、HomeAssistant 等 - 主要直接在服务器上运行,而不是在 Docker 中运行。

最近(几个月),服务器已经陷入瘫痪,即使在重启后立即报告负载 >5。

我正在运行 nginx 作为主反向代理,并将 Nextcloud 的请求转发到托管 Nextcloud 的 Apache。我不记得为什么这样设置,但我认为 Nextcloud 不推荐 nginx,或者没有它的设置指南。

启动后,我立即运行 iotop,看到 3 个 nginx 工作进程的 I/O 率高达 99%。我使用 fatrace 尝试查看发生了什么,因为 nginx 日志没有报告太多可以解释这种情况的活动。这些服务仅由家庭成员和我自己的设备在内部少量使用。

fatrace 显示以下内容无休止快速滚动。

nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)
nginx(2605): W /var/lib/nginx/proxy/9/00/0000000009 (deleted)

在此期间,nginx 日志显示活动最少。看来对 nextcloud 的调用是触发此无休止 nginx 循环的原因。如果我重新启动 nginx,则 I/O 活动最少,直到有东西向 Nextcloud 端点发出请求。以下是我的 nginx 配置,用于转发到 Apache。

    location /nextcloud {
                proxy_pass http://127.0.0.1:81/nextcloud/;
                proxy_set_header Host $host;
        proxy_read_timeout 1800;
         proxy_connect_timeout 1800;
         proxy_send_timeout 1800;
         send_timeout 1800;
}

fatrace 中这些(已删除)的行是什么?我该怎么做才能防止 nginx 消耗我所有的 I/O?

相关内容