Nginx

使用 Nginx/Celery/Django 的 EC2 上的高 CPU 負載導致伺服器失敗

  • July 8, 2020

我正在使用 Nginx 和 uWSGI 在 EC2 伺服器上執行 Django Web 應用程序。我也讓 Celery 執行一些後台任務(沒有 CRON 作業,只是偶爾的使用者操作)。

該應用程序處於早期封閉測試階段,目前沒有活躍使用者。

在過去的三天裡,伺服器在經歷超高 CPU 負載後會倒塌,似乎是隨機的(見螢幕截圖)。

在此之前,該應用程序執行數週都沒有問題。我對網站進行了一些程式更改,但沒有對伺服器配置進行更改(主要是合併模型)。

我試圖從日誌中提取一些東西(Nginx access.log、error.log 和 Django debug.log),但我沒有看到任何錯誤或奇怪的東西(現在無法訪問日誌)。

此外,如果我事先沒有重新啟動伺服器,我在遷移模型更改(在 venv 中)時遇到了類似的效果。有時,即使重新啟動伺服器,它也會變得如此緩慢,我不得不等待幾分鐘才能重新啟動 Celery。

我需要幫助才能找到調查問題的起點。有任何想法嗎?

伺服器負載

經過一些測試和評估,我看到我的驅動器空間已滿 99%。通過刪除 Django 的調試日誌文件以及其他一些日誌文件對其進行清理後,伺服器變得更加穩定,在過去 24 小時內沒有發生任何事件。

它確實迫使我實施了一些額外的措施來通過 Nginx Amplify 進行監控,這是一個幫助擷取伺服器問題的好工具。

我相信 CPU 進入超速狀態是為了彌補空間不足,清理驅動器解決了這個問題。

引用自:https://serverfault.com/questions/1024206