Nginx/Gunicorn 响应时间过长

Nginx/Gunicorn 响应时间过长

我设置了一个 Django 应用程序,通过 Nginx 提供静态文件,并通过 Gunicorn 运行上游,以使用驻留在专用服务器上的 PSQL 数据库来运行 Django 应用程序。
问题是,即使对于不需要访问数据库的主页,该网站的响应时间也太长了。
需要注意的一个重要细节是,当我重新启动主管服务(负责两个进程,一个是 gunicorn,另一个是 celery)时,我最多可以快速响应 3 个请求。
在这 3 个请求之后,应用程序再次变得无响应。

至于配置,Nginx 的超时配置(全部 3 个:连接、读取和发送)设置为 300。Gunicorn
具有相同的超时配置,并配置为运行 3 个工作程序。

该应用程序在具有单个 CPU 和 1GB 内存的 VPS 上运行。
以下是iostat用于基本统计数据。

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.49    0.00    0.44    0.03    3.21   94.83

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
xvda              0.74         3.23        12.79    1023355    4054257'

什么原因导致了这种现象?

答案1

正如 Tero Kilkanen 在评论中提到的那样,事实证明问题出在代码本身上。

我不断向服务器发送请求,以便实现某种程度的实时应用程序,结果却导致整个服务器无法处理其他请求。
查看服务器统计数据并不能帮助阐明问题,因为所有指标都显示服务器可以工作。

因此,如果您遇到这样的问题,请查看 Nginx 日志中短时间间隔内的多个请求。

相关内容