Nginx/Celery/Django 在 EC2 上的 CPU 负载过高导致服务器出现故障

Nginx/Celery/Django 在 EC2 上的 CPU 负载过高导致服务器出现故障

我在 EC2 服务器上运行一个 Django Web 应用,使用的是 Nginx 和 uWSGI。我还让 Celery 运行一些后台任务(没有 CRON 作业,只是偶尔执行用户操作)。

该应用程序处于早期封闭测试阶段,目前没有活跃用户。

在过去三天里,服务器在经历超高的 CPU 负载后会随机崩溃(见屏幕截图)。

在此之前,该应用程序运行了数周,没有出现问题。我对网站进行了一些程序性更改,但没有对服务器配置进行更改(主要是合并模型)。

我尝试从日志(Nginx access.log、error.log 和 Django debug.log)中找出一些信息,但没有看到任何错误或异常(现在无法访问日志)。

此外,如果我事先没有重启服务器,在迁移模型更改(在 venv 中)时也会遇到类似的情况。有时,即使重启服务器,它也会变得非常慢,我不得不等待几分钟才能让 Celery 重启。

我需要帮助来找到调查问题的起点。有什么想法吗?

服务器负载

答案1

经过一些测试和评估后,我发现我的驱动器空间已满 99%。通过删除 Django 的调试日志文件以及其他一些日志文件进行清理后,服务器变得更加稳定,过去 24 小时内没有发生任何事件。

它确实迫使我实施一些额外的措施来通过 Nginx Amplify 进行监控,这是一个帮助捕获服务器问题的好工具。

我相信 CPU 超速运转是为了弥补空间不足,清理驱动器可以解决这个问题。

相关内容