同一個伺服器上有多少個 celery 和 Gunicorn 工作人員?

同一個伺服器上有多少個 celery 和 Gunicorn 工作人員?

我有一台伺服器運行由 Gunicorn 和 Celery 任務佇列提供服務的 Django 應用程式。

鰩魚文件建議(2 x $num_cores) + 1 作為預設的工作執行緒數。

芹菜文檔顯示 Celery 工作執行緒的數量預設為 1 x $num_cores。

兩者都建議嘗試找到合適的數字。

我的問題是,在同一台機器上運行 Gunicorn 和 Celery 的良好經驗法則是什麼?在八核心機器上,我應該從 17 個 Gunicorn 和 8 個 Celery 工人開始嗎?或者從 9 個 Gunicorn 和 4 個 Celery 工人開始有意義嗎?

系統受 CPU 限制,如果有幫助的話。

答案1

任何類型的性能調整通常都比硬性規則更溫和。我最近不得不對我的 Django 應用程式做一些類似的事情,但有人決定濫用它。當您在同一台機器上執行 Gunicorn 和 Celery 時,理想情況下您應該從更平衡的方法開始,而不是最大化 Gunicorn 工作執行緒。這是我的方法:

  • 古尼角工人:

    • 首先使用稍少數量的 Gunicorn 工作線程,使用以下公式:2 * $num_cores + 1
    • 對於8核機器,你可以從8-12個Gunicorn工人開始
    • 背後的原因是,您希望確保仍有一些 CPU 資源留給 Celery 工作線程,因為 Celery 任務可能是 CPU 密集的。
  • 芹菜工人:

    • 您可以使用「推薦」數量的 Celery 工作人員
    • 它可以定義為 1 * $num_cores
    • 例如,對於 8 核心機器,您可以從 8 個 Celery 工作執行緒開始。

因此,在 8 核心機器上,一個好的啟動設定可能如下所示:

  • Gunicorn:8-12名工人
  • 芹菜:8名工人

目標是不讓 Gunicorn 工作人員不堪重負,至少將 CPU 資源留給 Celery 工作人員。

相關內容