LNMP-php-fpm參數優化

php-fpm參數優化

php-fpm進程設置多少合適,設成動態還是靜態?

lnmp一鍵安裝包》中會根據你服務器內存調整php-fpm進程數。

下面是摘自Google討論話題:《 PHP-FPM on highload tips 》[牆外,翻牆可參考goagent]。

When you running a highload website with PHP-FPM via FastCGI, the following tips may be useful to you

如果你的高負載網站使用PHP-FPM管理FastCGI,也許下面這些技巧對你有用

1. Compile PHP's modules as less as possible, the simple the best (fast);

儘量少安裝PHP模塊,最簡單是最好(快)的

2. Increas PHP FastCGI child number to 100 and even more. Sometime, 200 is OK! ( On 4GB memory server);

把你的PHP FastCGI子進程數調到100或以上,在4G內存的服務器上200就可以(建議壓力測試來得出自己服務器合理的值

3. Using SOCKET PHP FastCGI, and put into /dev/shm on Linux;

socket連接FastCGI,/dev/shm是內存文件系統,socket放在內存中肯定會快些

4. Increase Linux "max open files", using the following command (must be root):

Linux下增加文件打開數,命令如下:

  1. cat >> /etc/security/limits.conf <<EOF
  2. * soft nproc 65535
  3. * hard nproc 65535
  4. * soft nofile 65535
  5. * hard nofile 65535
  6. EOF

5. Increase PHP-FPM open file description rlimit:

增加 PHP-FPM 打開文件描述符的限制:

  1. # vi $php_install_dir/etc/php-fpm.conf
  2. rlimit_files = 51200

6. Using PHP code accelerator, e.g eAccelerator, XCache. And set "cache_dir" to /dev/shm on Linux.

使用php代碼加速器,例如 eAccelerator, XCache.在Linux平臺上可以把`cache_dir`指向 /dev/shm

/usr/local/php/etc/php-fpm.conf重要優化參數詳解:

  1. pm = dynamic

pm參數指定了進程管理方式,有兩種可供選擇:static或dynamic,從字面意思不難理解,爲靜態或動態方式。如果是靜態方式,那麼在php-fpm啓動的時候就創建了指定數目的進程,在運行過程中不會再有變化(並不是真的就永遠不變);而動態的則在運行過程中動態調整,當然並不是無限制的創建新進程,受pm.max_spare_servers參數影響;動態適合小內存機器,靈活分配進程,省內存。靜態適用於大內存機器,動態創建回收進程對服務器資源也是一種消耗

  1. pm.max_children = 24

static模式下創建的子進程數或dynamic模式下同一時刻允許最大的php-fpm子進程數量

  1. pm.start_servers = 16

#動態方式下的起始php-fpm進程數量

  1. pm.min_spare_servers = 12

#動態方式下服務器空閒時最小php-fpm進程數量

  1. pm.max_spare_servers = 24

#動態方式下服務器空閒時最大php-fpm進程數量

一般php-fpm進程佔用20~30m左右的內存就按30m算。如果單獨跑php-fpm,動態方式起始值可設置物理內存Mem/30M,由於大家一般Nginx、MySQL都在一臺機器上,於是預留一半給它們,即php-fpm進程數爲$Mem/2/30。

LNMP在一臺機器上參數(僅供參考,建議壓力測試得出):

  1. Mem=`free -m | awk '/Mem:/{print $2}'` #我的機器內存是987M
  2. sed -i "s@^pm.max_children.*@pm.max_children = $(($Mem/2/20))@" $php_install_dir/etc/php-fpm.conf
  3. sed -i "s@^pm.start_servers.*@pm.start_servers = $(($Mem/2/30))@" $php_install_dir/etc/php-fpm.conf
  4. sed -i "s@^pm.min_spare_servers.*@pm.min_spare_servers = $(($Mem/2/40))@" $php_install_dir/etc/php-fpm.conf
  5. sed -i "s@^pm.max_spare_servers.*@pm.max_spare_servers = $(($Mem/2/20))@" $php_install_dir/etc/php-fpm.conf

987M內存:

  1. pm = dynamic
  2. pm.max_children = 24
  3. pm.start_servers = 16
  4. pm.min_spare_servers = 12
  5. pm.max_spare_servers = 24
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章