![IIS FastCGI 下的 PHP - 如何決定 InstanceMaxRequests 和 PHP_FCGI_MAX_REQUESTS 的最佳值](https://rvso.com/image/726385/IIS%20FastCGI%20%E4%B8%8B%E7%9A%84%20PHP%20-%20%E5%A6%82%E4%BD%95%E6%B1%BA%E5%AE%9A%20InstanceMaxRequests%20%E5%92%8C%20PHP_FCGI_MAX_REQUESTS%20%E7%9A%84%E6%9C%80%E4%BD%B3%E5%80%BC.png)
我正在 Windows Server 2012 R2 上的 IIS 8.5 中運行 PHP 5.4(是的,我知道它很舊並且需要升級)作為 FastCGI 元件。當我調整設定時,我讀了https://docs.microsoft.com/en-us/iis/application-frameworks/running-php-applications-on-iis/configure-php-process-recycling-behavior文章。
那篇文章推薦設定實例最大請求數和PHP_FCGI_MAX_REQUESTS到10 000- 但它沒有解釋為什麼。是否有更好的策略來確定特定環境的最佳值,或者根據文章將其硬編碼為 10 000 是否安全?
我如何確定什麼是最好的實例最大請求數和PHP_FCGI_MAX_REQUESTS值是對於我自己的環境?我如何確定應該使用哪些值?
答案1
我運行生產環境的值為20 000至少5年沒有問題。 (我運行我的開發環境的值為200.)
問題實際上是這樣的:您希望(或需要)多久創建一次新的 PHP 進程來處理傳入流量?如果您在日誌中看到大量 HTTP 500 錯誤,請嘗試減少此值。
設定得太低會導致php-cgi.exe
全天建立和銷毀許多進程,這可能會導致處理請求略有延遲。將其設置得太高會導致記憶體洩漏在更長時間內不受檢查,或者如果進程崩潰,可能會導致無法解釋的 HTTP 500 錯誤(儘管我認為這不太可能)。