歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> php-fpm參數優化

php-fpm參數優化

日期:2017/2/27 15:57:34   编辑:Linux教程
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下增加文件打開數,命令如下:
cat >> /etc/security/limits.conf <<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOF

5. Increase PHP-FPM open file description rlimit:
增加 PHP-FPM 打開文件描述符的限制:
# vi $php_install_dir/etc/php-fpm.conf
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/localphp/etc/php-fpm.conf重要優化參數詳解:
pm = dynamic
pm參數指定了進程管理方式,有兩種可供選擇:static或dynamic,從字面意思不難理解,為靜態或動態方式。如果是靜態方式,那麼在php- fpm啟動的時候就創建了指定數目的進程,在運行過程中不會再有變化(並不是真的就永遠不變);而動態的則在運行過程中動態調整,當然並不是無限制的創建 新進程,受pm.max_spare_servers參數影響;動態適合小內存機器,靈活分配進程,省內存。靜態適用於大內存機器,動態創建回收進程對服務器資源也是一種消耗

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

pm.start_servers = 16
#動態方式下的起始php-fpm進程數量

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

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

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

LNMP在一台機器上參數(僅供參考,建議壓力測試得出):
Mem=`free -m | awk '/Mem:/{print $2}'` #我的機器內存是987M
sed -i "s@^pm.max_children.*@pm.max_children = $(($Mem/2/20))@" $php_install_dir/etc/php-fpm.conf
sed -i "s@^pm.start_servers.*@pm.start_servers = $(($Mem/2/30))@" $php_install_dir/etc/php-fpm.conf
sed -i "s@^pm.min_spare_servers.*@pm.min_spare_servers = $(($Mem/2/40))@" $php_install_dir/etc/php-fpm.conf
sed -i "s@^pm.max_spare_servers.*@pm.max_spare_servers = $(($Mem/2/20))@" $php_install_dir/etc/php-fpm.conf
987M內存:
pm = dynamic
pm.max_children = 24
pm.start_servers = 16
pm.min_spare_servers = 12
pm.max_spare_servers = 24
原文:http://blog.linuxeye.com/380.html
Copyright © Linux教程網 All Rights Reserved