任何具有大量可用资源的Nginx请求的网关超时为504

时间:2018-05-09 10:22:24

标签: django amazon-web-services nginx timeout gunicorn

我们一直在内部维护一个既有网络又有移动应用平台的项目。该项目的后端是在Django 1.9(Python 3.4)中开发的,并部署在AWS中。

服务器堆栈由Nginx,Gunicorn,Django和PostgreSQL组成。我们使用基于Redis的缓存服务器来处理资源密集型的大量查询。我们的AWS资源包括:

  1. t1.medium EC2(2核,4 GB RAM)
  2. PostgreSQL RDS,附带一个额外的只读副本。
  3. 现在Gunicorn将创造5名工人(遵循2 * n + 1规则)。加载方面,每分钟有20-30个移动用户发出请求,每小时有5-10个用户检查Web面板。所以我会说,负载不是很大。

    现在这个设置可以正常工作80%。但是当出现问题时(例如,我们检测到实时系统中的错误,我们不得不关闭服务器进行维护几个小时。同时,移动应用程序在他们的应用程序中准备好了一系列请求。所以当我们使后端生效时,很多用户同时点击系统。),服务器停止正常运行并开始响应504网关超时错误。

    令人惊讶的是,每次发生这种情况时,我们发现服务器资源(CPU,内存)可以释放70-80%,而数据库中的连接池大多是免费的。

    知道问题出在哪里?怎么调试?如果您已遇到类似问题,请分享修复程序。

    谢谢,

0 个答案:

没有答案