溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php cgi.exe太多怎么處理

發(fā)布時間:2020-10-13 14:51:32 來源:億速云 閱讀:153 作者:小新 欄目:編程語言

php cgi.exe太多怎么處理?這個問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!

php cgi.exe太多的解決辦法:首先檢查系統(tǒng)盤空間;然后將PHP安裝為CGI模式或者ISAPI模式;接著修改程序;最后在web服務(wù)器配置中優(yōu)化fastcgi配置文件參數(shù)即可。

服務(wù)器大量php-cgi.exe進程,導(dǎo)致CPU占用100%的解決

出現(xiàn)該問題一般為程序方面問題,如程序采用fastcgi方式運行PHP,而程序設(shè)置的StartProcesses又偏大,如6甚至更大。

解決參考:

1.檢查系統(tǒng)盤空間。查看系統(tǒng)臨時文件是否過多,MySQL數(shù)據(jù)庫的臨時文件默認存到了c:/windows/temp,導(dǎo)致累積了幾萬甚至上百萬的小文件,壓垮系統(tǒng)盤。

del *.*   刪除所有文件

2.PHP是一種廣泛使用的動態(tài)腳本語言,不過在IIS中并沒有內(nèi)置對PHP語言的支持,因此如果需要使用PHP,必須自行安裝。PHP可以安裝為CGI模式或者ISAPI模式,由于ISAPI模式具有更高的性能,因此我建議大家使用ISAPI模式。

3.如能修改程序,建議將程序配置文件中的StartProcesses值縮到2,看是否改善。

4.看是否服務(wù)器有問題攻擊現(xiàn)象。

windows 2003+IIS6中優(yōu)化fastcgi配置文件fcgiext.ini,減少 PHP-cgi.exe進程數(shù)量和所占內(nèi)存大小

本來聽說fastcgi比isapi好就在服務(wù)器中裝上了,配置環(huán)境為windows 2003+IIS6+fastcgi(FCGI)+PHP5.2.17,經(jīng)過與很長一段時間觀察,發(fā)現(xiàn)工作在FastCGI模式下的PHP會占用越來越多的內(nèi)存,訪問量稍微多點php-cgi進程就多了N個,同樣情況下能比原來用isapi模式的時候多出幾百M,我的服務(wù)器內(nèi)存只有2G傷不起啊。

我在網(wǎng)上搜索了一下,發(fā)現(xiàn)還有不少人面臨同樣的問題。來自PHP官方的一個比較正式的解釋是:php-cgi進程并沒有內(nèi)存泄漏,php-cgi會在每個請求結(jié)束的時候回收腳本使用的全部內(nèi)存,但是并不會釋放給 操作系統(tǒng),而是繼續(xù)持有以應(yīng)對下一次PHP請求。這樣做大概是為了減少內(nèi)存碎片化或者解決從系統(tǒng)申請內(nèi)存之后又釋放回操作系統(tǒng)所需要的時間不可控問題??墒侨绻既灰淮蜳HP請求使用了諸如ftp或者zlib這樣的大內(nèi)存操作,那么將導(dǎo)致一大塊系統(tǒng)內(nèi)存被php-cgi持續(xù)占有,不能被利用。

解決這個問題的辦法是在web服務(wù)器配置中優(yōu)化fastcgi配置文件參數(shù)。

在C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件中可以設(shè)定php-cgi進程相關(guān)參數(shù),如:

[Types]
php = PHP
[PHP]
ExePath=C:\php-5.3.8-nts-Win32-VC9-x86\php-cgi.exe
maxInstances=100
InstanceMaxRequests=10000
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000
RequestTimeout=600
ActivityTimeout=900

在上面的配置中:

ExePath  指定了FastCGI解析程序的路徑,
instanceMaxRequests  指定了每個實例可以處理的最大請求數(shù),
maxInstances 指定可以啟動的最大實例數(shù)目,
EnvironmentVars 創(chuàng)建了一個環(huán)境變量 PHP_FCGI_MAX_REQUESTS ,默認值設(shè)為10000,
requestTimeout  指定了請求的超時時間為600秒,
activityTimeout  指定了活動會話超時時間為900秒。

一下是建議值:

maxInstances=

把這個值改小

建議

512M 內(nèi)存的改maxInstances=50
1G 內(nèi)存的改maxInstances=80
2G 內(nèi)存的改maxInstances=140

再修改

InstanceMaxRequests=

把這個值改小

建議

512M 內(nèi)存的改InstanceMaxRequests=200
1G 內(nèi)存的改InstanceMaxRequests=300
2G 內(nèi)存的改InstanceMaxRequests=500

改完, 重啟IIS。

instanceMaxRequests  PHP_FCGI_MAX_REQUESTS  這兩個參數(shù)決定了一個php-cgi進程被創(chuàng)建出來之后,最多接受的PHP請求數(shù),在lighttpd中默認配置是10000。也就是說這個php-cgi進程每接受10000次PHP請求后會終止,釋放所有內(nèi)存,并重新被管理進程啟動。如果把它降低,比如改成100,那么php-cgi重啟的周期會大大縮短,偶然的高內(nèi)存操作造成的問題影響時間也會縮短。

maxInstances 這個參數(shù)指定可以啟動的最大實例數(shù)目,即php-cgi.exe進程的數(shù)目。如果把它降低,比如改成100,那么在任務(wù)管理器的進程中最多只有php-cgi.exe進程,php-cgi.exe所占用的總內(nèi)存將大大減少。

我現(xiàn)在用的服務(wù)器為windows 2003操作系統(tǒng),4G內(nèi)存,一個php-cgi.exe程序占用7-25M內(nèi)存,我把maxInstances值調(diào)為300,減少了php-cgi.exe進程的總數(shù)量,占用內(nèi)存也減小了,反應(yīng)速度比以前快了不少,至少調(diào)整到多少,可根據(jù)您的站點訪問量來決定。

感謝各位的閱讀!看完上述內(nèi)容,你們對php cgi.exe太多怎么處理大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI