我们一直在内部维护一个既有网络又有移动应用平台的项目。该项目的后端是在Django 1.9(Python 3.4)中开发的,并部署在AWS中。
服务器堆栈由Nginx,Gunicorn,Django和PostgreSQL组成。我们使用基于Redis的缓存服务器来处理资源密集型的大量查询。我们的AWS资源包括:
现在Gunicorn将创造5名工人(遵循2 * n + 1规则)。加载方面,每分钟有20-30个移动用户发出请求,每小时有5-10个用户检查Web面板。所以我会说,负载不是很大。
现在这个设置可以正常工作80%。但是当出现问题时(例如,我们检测到实时系统中的错误,我们不得不关闭服务器进行维护几个小时。同时,移动应用程序在他们的应用程序中准备好了一系列请求。所以当我们使后端生效时,很多用户同时点击系统。),服务器停止正常运行并开始响应504网关超时错误。
令人惊讶的是,每次发生这种情况时,我们发现服务器资源(CPU,内存)可以释放70-80%,而数据库中的连接池大多是免费的。
知道问题出在哪里?怎么调试?如果您已遇到类似问题,请分享修复程序。
谢谢,