iis6中如何減少php-cgi.exe進程數量and FastCGI+PHP5.3.3的配置方法

來源:互聯網
上載者:User

仲介交易 HTTP://www.aliyun.com/zixun/aggregation/6858.html">SEO診斷 淘寶客 雲主機 技術大廳

FastCGI的優化配置

FastCGI優化設定檔fcgiext.ini,它在%windir%\system32\inetsrv裡。 我們將嘗試用兩種辦法進行配置:FastCGI管理腳本fcgiconfig.js;記事本編輯fcgiext.ini。

腳本配置FastCGI

打開你的命令列cmd.exe,切換到目錄 %windir%\system32\inetsrv。 複製下面內容,回車執行以下即可完成。 請根據需要設置後面的參數。

1 cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:5000

2

3 cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:5000

4

5 cscript fcgiconfig.js -set -section:"PHP" -RequestTimeout:360

6

7 cscript fcgiconfig.js -set -section:"PHP" -ActivityTimeout:120

腳本的含義,分別是:

設置應用程式池回收。 FastCGI進程請求數達到InstanceMaxRequests數值5000,應用程式池將自動回收。 預設值是1000。

當環境變數PHP_FCGI_MAX_REQUESTS達到10000將自動回收應用程式池。

RequestTimeout 佈建要求超時時間,也就是請求允許的最大時間,如果FastCGI進程請求超過此設置將被禁止,值是90秒。

ActivityTimeout 指定FastCGI進程請求的最大活躍時間,在設定時間內,FastCGI進程和IIS沒有通信,將終止進程。 預設值是70秒。

注意:指令碼命令是全域設置,針對伺服器上所有以FastCGI運行的PHP網站。 因此對於多網站的虛擬機器來說,InstanceMaxRequests設置成PHP網站數X500相對理想。

500是變數。 如果有10個網站,那麼200X50=5000,類推。 流量大的伺服器,數值設置過小頻繁回收應用程式池,並不是什麼明智的做法。 ——雖然,系統回收了不少資源。

RequestTimeout數值過大,無疑將讓更多消耗系統資源的請求運行; ActivityTimeout設置為120秒不活動就斷開好,還是30秒不活動就斷開好,因人而異。

複製粘貼適合懶人

FastCGI設定檔fcgiext.ini設置

InstanceMaxRequests=10000

EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000

RequestTimeout=360

ActivityTimeout=120

把上面代碼複製到fcgiext.ini的末尾,保存就好了。

PHP5.3.6的優化配置

PHP5.3.6的php.ini配置也分為兩部分:關於FastCGI的配置;關於PHP本身的配置。 我的PHP5.3.6安裝在C:\PHP。

PHP.ini關於FastCGI部分

fastcgi.impersonate = 1

cgi.fix_pathinfo=1

cgi.force_redirect = 0

PHP.ini關於自身的部分

一、搜索extension_dir,去掉前面注釋「;」,修改成:

1 extension_dir = "c:/php/ext"

二、搜索date.timezone,去掉前面注釋「;」,修改成:

1 date.timezone = "asia/shanghai"

三、搜索下面,然後去掉前面的注視「;」

extension=php_gd2.dll

extension=php_mbstring.dll

extension=php_mysql.dll

如此這般你的PHP基本可以暢通無阻了。 至於一些更高級的修改,我們沒有必要研究那麼深,不是嗎?

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進程的總數量,佔用記憶體也減小了,反應速度比以前快了不少,至少調整到多少,可根據您的網站訪問量來決定。

版權:37路論壇

本文連結位址:HTTP://www.37lu.net/thread-25227-1-1.html

歡迎轉載,轉載時必須注明連結和出處。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.