配置 nginx 和 PHP5-FPM
我有一個帶有 1 個 CPU 核心的 VPS,當我四處尋找一些關於配置 nginx 和 php5-fpm 的好文件時,我經常遇到諸如“我有一個雙核 CPU,所以我將其限制為 2 個程序..”之類的東西。
現在我的問題是,由於我有 1 個核心,將 nginx (以及 php5-fpm )限制為 1 個程序是個好主意嗎?如果我是正確的,這對於多執行緒 nginx 架構應該不是問題嗎?
目前伺服器似乎執行良好,但負載非常低,當從我的家庭連接使用 AB 時,我在 499 次連接後超時 - 但我不完全確定它為什麼超時(我的整個系統凍結)。
在 Internet 上閱讀內容的問題在於它通常沒有有用的理由(如果你幸運的話),不適用於你的情況,或者是徹頭徹尾的簡單錯誤(迄今為止最常見的)。
如果您的請求處理在 fpm 工作器中完全受 CPU 限制,那麼是的,每個核心擁有多個程序不會提高吞吐量。然而,這是一個非常罕見的場景——通常你的 PHP 腳本正在訪問數據庫,或者從文件系統中讀取內容,或者進行外部連接以獲取其他數據,或者其他什麼。所有這些都是 CPU 時間,如果每個核心只有一個 fpm 工作執行緒,那麼這將被浪費掉。
您的環境的正確配置是“了解您的應用程序”和實驗的組合。我會嘗試在一個核心上使用兩個 fpm 工作人員,看看在負載下會發生什麼(實際負載,而不是 ab 負載)。如果 CPU 完全固定,那麼您可能正在做的 CPU 工作超出了您的處理能力,您應該將其撥回一點(或者只是獲得更多 CPU)。如果您要最大限度地提高吞吐量但 CPU 仍然相當空閒,那麼您可以增加工作人員的數量,直到 CPU 接近最大限度。
當然,這假設機器上沒有很多其他需要 CPU 時間的東西。你必須給 nginx 一些 CPU 時間,如果你有一個數據庫或其他任何東西,它也需要查看,但很高興當你看到 CPU 上升時它會自行解決工人數。