解決 IIS 的 PHP 發生 FastCGI 處理序超過設定的活動逾時問題

解決 IIS 的 PHP 發生 FastCGI 處理序超過設定的活動逾時問題

今天在執行 WordPress 上的版本更新時,因為更新檔案太大,出現了錯誤「FastCGI 處理序超過設定的活動逾時」。

FastCGI 處理序超過設定的活動逾時問題

這是執行 FastCGI 過久而發生的 Timeout 的問題,要修改 FastCGI Timeout 設定需要到 IIS 的設定檔。

修改 IIS 設定檔

路徑為: C:\Windows\System32\inetsrv\config\applicationHost.config
用純文字開啟 applicationHost.config
然後搜尋 「<fastCgi>」,找到以下設定

fullPath 的設定值依個人環境有所不同。

增加 fastCgi /application 的 timeout 設定 requestTimeout="900" activityTimeout="180"
修改後的結果為

修改說明

requestTimeout:
指定應用程式提出要求的允許時間上限。 如果 FastCGI 處理序處理單一要求時所花費的時間超過指定的時間長度,系統就會終止此處理序。 預設值為 90 秒,建議修改值為 900 秒。

activityTimeout:
指定應用程式的 FastCGI 處理序逾時之前,允許此處理序未與 IIS 通訊執行的時間長度上限。 這個逾時值可用來偵測並關閉停止回應的處理序。 預設值為 30 秒,建議修改值為 180 秒。

修改完成之後,在重啟 IIS 上的網站就可以了喔。

想要快速的重啟 IIS,可以在”命令提示字元”輸入這個指令 iisreset

FastCGI 是什麼?

FastCGI 是 IIS 與 PHP 之間的溝通閘道器。

在講 FastCGI 前先解釋一下 CGI,CGI 全稱是「公共閘道器介面 (Common Gateway Interface)」,HTTP 伺服器與你的或其它機器上的程式進行交談的一種工具,其程式須執行在網路伺服器上。

而 FastCGI 是一種常駐型的 CGI,當 PHP 啟動時、會去尋找 php.ini,進行環境的初始化,如果不使用 FastCGI 的情況下,每一個請求都會做這個動作,很明顯浪費系統資源,所以 FastCGI 會先啟動一個 master,解析配置文件用,接下來再啟動 worker,當請求過來時,master 會遞資訊給 worker,然後接下來等下一個請求,有這個機制就不用每一次重新跑一次初始化的動作了。

想要了解更多的 IIS 上相關 FastCGI 設定,可參考以下網址:
https://forsenergy.com/zh-tw/inetsrvmmc/html/e3ce5574-abc0-4108-a8f7-d7ac6452a534.htm

相關學習文章

如果你在學習上有不懂的地方,需要諮詢服務,可以參考站長服務,我想辨法解決你的問題
如果文章內容有過時、不適用或錯誤的地方,幫我在下方留言通知我一下,謝謝

加入社團一起討論

關注我的 IG