中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

如何解決服務器大量php-cgi.exe進程導致CPU占用100%的問題

發布時間:2021-06-30 15:23:49 來源:億速云 閱讀:297 作者:chen 欄目:開發技術

本篇內容主要講解“如何解決服務器大量php-cgi.exe進程導致CPU占用100%的問題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何解決服務器大量php-cgi.exe進程導致CPU占用100%的問題”吧!

 windows 2003+IIS6中優化fastcgi配置文件fcgiext.ini,減少php-cgi.exe進程數量和所占內存大小

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

我在網上搜索了一下,發現還有不少人面臨同樣的問題。來自PHP官方的一個比較正式的解釋是:php-cgi進程并沒有內存泄漏,php-cgi會在每個請求結束的時候回收腳本使用的全部內存,但是并不會釋放給操作系統,而是繼續持有以應對下一次PHP請求。這樣做大概是為了減少內存碎片化或者解決從系統申請內存之后又釋放回操作系統所需要的時間不可控問題。可是如果偶然一次PHP請求使用了諸如ftp或者zlib這樣的大內存操作,那么將導致一大塊系統內存被php-cgi持續占有,不能被利用。
解決這個問題的辦法是在web服務器配置中優化fastcgi配置文件參數。

在C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件中可以設定php-cgi進程相關參數,如:

[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  指定了每個實例可以處理的最大請求數,
maxInstances 指定可以啟動的最大實例數目,
EnvironmentVars 創建了一個環境變量 PHP_FCGI_MAX_REQUESTS ,默認值設為10000,
requestTimeout  指定了請求的超時時間為600秒,
activityTimeout  指定了活動會話超時時間為900秒。
一下是建議值:
maxInstances=
把這個值改小

建議

512M 內存的改maxInstances=50
1G 內存的改maxInstances=80
2G 內存的改maxInstances=140

再修改
InstanceMaxRequests=
把這個值改小

建議

512M 內存的改InstanceMaxRequests=200
1G 內存的改InstanceMaxRequests=300
2G 內存的改InstanceMaxRequests=500

改完, 重啟IIS。

instanceMaxRequests  PHP_FCGI_MAX_REQUESTS  這兩個參數決定了一個php-cgi進程被創建出來之后,最多接受的PHP請求數,在lighttpd中默認配置是10000。也就是說這個php-cgi進程每接受10000次PHP請求后會終止,釋放所有內存,并重新被管理進程啟動。如果把它降低,比如改成100,那么php-cgi重啟的周期會大大縮短,偶然的高內存操作造成的問題影響時間也會縮短。
maxInstances 這個參數指定可以啟動的最大實例數目,即php-cgi.exe進程的數目。如果把它降低,比如改成100,那么在任務管理器的進程中最多只有php-cgi.exe進程,php-cgi.exe所占用的總內存將大大減少。
我現在用的服務器為windows 2003操作系統,4G內存,一個php-cgi.exe程序占用7-25M內存,我把maxInstances值調為300,減少了php-cgi.exe進程的總數量,占用內存也減小了,反應速度比以前快了不少,至少調整到多少,可根據您的站點訪問量來決定。

win2008服務器,fastCGI完美設置教程

在WIN2008的IIS7上使用FASTCGI調用PHP-CGI.EXE,默認只有4個進程,這樣對于大流量的網站為說,進程數不足帶來的進程排隊現象十分嚴重,解決方案如下。

32位系統 http://www.iis.net/Downloads/files/AdminPack/TP2/AdminPack_x86.msi
64位系統 http://www.iis.net/Downloads/files/AdminPack/TP2/AdminPack_amd64.msi

下載如下工具,安裝后,如下圖。

如何解決服務器大量php-cgi.exe進程導致CPU占用100%的問題
如何解決服務器大量php-cgi.exe進程導致CPU占用100%的問題

添加

PHP_FCGI_MAX_REQUESTS = 10000

添加后,不用重啟IIS,就能在進程管理器看到效果。

如何解決服務器大量php-cgi.exe進程導致CPU占用100%的問題

似乎并沒有達到設定的值,不過瀏覽網站明顯感覺到性能的提示。

如何解決服務器大量php-cgi.exe進程導致CPU占用100%的問題

內存占用~~ 其實微軟的系統有一個不好處在于, 服務器的內存占用,要盡量讓服務去使用,而并不像客戶端使用一樣,留足夠多的內存給用戶的應用程序。

我在這里要提醒大家注意的是以下兩個參數值得設置:

InstanceMaxRequests:fastcgi進程(php-fcgi.exe)能處理的最大請求數,超過了就要回收,默認是200

PHP_FCGI_MAX_REQUESTS:php自身控制的最大請求數,默認是500

既然要用fastcgi去運行cgi,那肯定是不想php自身去限制最大請求數!!

所以,一定要保證InstanceMaxRequests小于 或 等于 PHP_FCGI_MAX_REQUESTS,這樣php自身永遠沒有機會去回收進程。

可以看micorsoft說的:

Make sure that FastCGI always recycles Php-cgi.exe processes before native PHP recycling starts. The configuration property instanceMaxRequests controls the FastCGI process-recycling behavior. This property specifies how many requests FastCGI will process before recycling. PHP also has a similar process-recycling functionality that is controlled by the environment variable PHP_FCGI_MAX_REQUESTS. By setting instanceMaxRequests to a value that is smaller than or equal to PHP_FCGI_MAX_REQUESTS, you can make sure that the native PHP process-recycling logic will never start.

服務器php-cgi.exe進程過多,導致CPU占用100%的解決方法

使用iis服務器中經常會出現php-cgi.exe進程過多,導致CPU占用100%,最終造成網站運行過慢甚至卡死的情況,重啟iis會好一會,過一段時間久出現這種情況,為什么會出現這種情況呢,應該怎么解決呢,開始的時候我一直手動結束php-cgi程序,雖然可以臨時解決問題,但是不是長久之計,我百度了下,出現該問題一般為程序方面問題,如程序采用fastcgi方式運行PHP,而程序設置的StartProcesses又偏大,如6甚至更大。下面是我整理的對php-cgi.ext過多引起服務器cup%的解決方法,希望對大家有幫助;大多數情況是發生在第四項上;

解決參考:

1.檢查系統盤空間。查看系統臨時文件是否過多,mysql數據庫的臨時文件默認存到了c:/windows/temp,導致累積了幾萬甚至上百萬的小文件,壓垮系統盤。

del *.* 刪除所有文件

如果上面的命令不夠強悍,可以使用下面的代碼

del /f /q /s tmp\*.*

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

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

4.看是否服務器有問題攻擊現象。

到此,相信大家對“如何解決服務器大量php-cgi.exe進程導致CPU占用100%的問題”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大新县| 临安市| 鞍山市| 柘城县| 盖州市| 黎平县| 麻城市| 台湾省| 桐城市| 巴楚县| 淄博市| 萨迦县| 盐池县| 乾安县| 天门市| 德阳市| 丰都县| 米泉市| 杂多县| 且末县| 犍为县| 鹤庆县| 保靖县| 沂源县| 常熟市| 泽州县| 楚雄市| 绵阳市| 寿阳县| 丰都县| 东丽区| 定陶县| 焉耆| 长岭县| 微博| 邵阳市| 房产| 金寨县| 体育| 临城县| 朝阳市|