pm表示使用那種方式,有兩個值可以選擇,就是static(靜態(tài))或者dynamic(動態(tài))。在更老一些的版本中,dynamic被稱作apache-like。這個要注意看配置文件的說明。

下面4個參數(shù)的意思分別為:

pm.max_children:靜態(tài)方式下開啟的php-fpm進程數(shù)量。
pm.start_servers:動態(tài)方式下的起始php-fpm進程數(shù)量。
pm.min_spare_servers:動態(tài)方式下的最小php-fpm進程數(shù)量。
pm.max_spare_servers:動態(tài)方式下的最大php-fpm進程數(shù)量。

如果dm設置為static,那么其實只有pm.max_children這個參數(shù)生效。系統(tǒng)會開啟設置數(shù)量的php-fpm進程。

如果dm設置為dynamic,那么pm.max_children參數(shù)失效,后面3個參數(shù)生效。系統(tǒng)會在php-fpm運行開始的時候啟動pm.start_servers個php-fpm進程,然后根據(jù)系統(tǒng)的需求動態(tài)在pm.min_spare_servers和pm.max_spare_servers之間調(diào)整php-fpm進程數(shù)。

那么,對于我們的服務器,選擇哪種執(zhí)行方式比較好呢?事實上,跟Apache一樣,運行的PHP程序在執(zhí)行完成后,或多或少會有內(nèi)存泄露的問題。這也是為什么開始的時候一個php-fpm進程只占用3M左右內(nèi)存,運行一段時間后就會上升到20-30M的原因了。

對于內(nèi)存大的服務器(比如8G以上)來說,指定靜態(tài)的max_children實際上更為妥當,因為這樣不需要進行額外的進程數(shù)目控制,會提高效率。因為頻繁開關php-fpm進程也會有時滯,所以內(nèi)存夠大的情況下開靜態(tài)效果會更好。數(shù)量也可以根據(jù) 內(nèi)存/30M 得到,比如8GB內(nèi)存可以設置為100,那么php-fpm耗費的內(nèi)存就能控制在 2G-3G的樣子。如果內(nèi)存稍微小點,比如1G,那么指定靜態(tài)的進程數(shù)量更加有利于服務器的穩(wěn)定。這樣可以保證php-fpm只獲取夠用的內(nèi)存,將不多的內(nèi)存分配給其他應用去使用,會使系統(tǒng)的運行更加暢通。

對于小內(nèi)存的服務器來說,比如256M內(nèi)存的VPS,即使按照一個20M的內(nèi)存量來算,10個php-cgi進程就將耗掉200M內(nèi)存,那系統(tǒng)的崩潰就應該很正常了。因此應該盡量地控制php-fpm進程的數(shù)量,大體明確其他應用占用的內(nèi)存后,給它指定一個靜態(tài)的小數(shù)量,會讓系統(tǒng)更加平穩(wěn)一些?;蛘呤褂脛討B(tài)方式,因為動態(tài)方式會結(jié)束掉多余的進程,可以回收釋放一些內(nèi)存,所以推薦在內(nèi)存較少的服務器或VPS上使用。具體最大數(shù)量根據(jù) 內(nèi)存/20M 得到。比如說512M的VPS,建議pm.max_spare_servers設置為20。至于pm.min_spare_servers,則建議根據(jù)服務器的負載情況來設置,比較合適的值在5~10之間。

贊(0)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-62778877-8306;郵箱:fanjiao@west.cn。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明出處:西部數(shù)碼知識庫 » Nginx使用的php-fpm的兩種進程管理方式及優(yōu)化方法

登錄

找回密碼

注冊