Nginx/Gunicorn 回應時間過長

Nginx/Gunicorn 回應時間過長

我有一個 Django 應用程式設置,透過 Nginx 提供靜態文件,並透過 Gunicorn 運行上游,以使用駐留在專用伺服器上的 PSQL 資料庫運行 Django 應用程式。
問題在於,即使對於不需要存取資料庫的主頁,該網站的回應時間也太長。
需要注意的一個重要細節是,當我重新啟動 Supervisor 服務(它負責兩個進程,一個是 Gunicorn,另一個是 celery)時,我最多可以獲得 3 個請求的快速回應。
在這 3 個請求之後,應用程式再次變得無回應。

至於配置,Nginx 配置的逾時(所有 3 個:連接、讀取和發送)設定為 300

該應用程式運行在具有單一 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 日誌是否有短時間間隔內的多個請求。

相關內容