lnmp 优化
php-fpm 优化问题
pm设置动态还是静态,要根据你的内存来定!
1、如果你的内存足够大,例如4G或4G以上你可以将pm设置成静态(static),因为这样不需要进行额外的进程数目控制,会提高效率(频繁开关php-fpm进程也会有时滞的)所以内存够大的情况下开静态效果会更好。
比如4GB内存可以设置为pm.max_children = 80,那么按照每个进程占用15~30M内存计算,php-fpm耗费的内存就能控制在1.2G-2.5G的样子。
2、如果内存小,比如1G,那么指定静态的进程数量更加有利于服务器的稳定。这样可以保证php-fpm只获取够用的内存,将不多的内存分配给其他应用去使用,会使系统的运行更加畅通。
pm.max_children:静态方式下开启的php-fpm进程数量。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下的最小备用php-fpm进程数量。
pm.max_spare_servers:动态方式下的最大备用php-fpm进程数量。
下面是我1G内存VPS的配置:
pm = dynamic
pm.max_children = 24
pm.start_servers = 6
pm.min_spare_servers = 3
pm.max_spare_servers = 9
pm.max_requests = 2048
pm.process_idle_timeout = 10
request_terminate_timeout = 120
request_slowlog_timeout = 0
slowlog = log/slow.log
rlimit_files = 51200
rlimit_core = 0
修改/usr/local/php/etc/php-fpm.conf php 5.2调整:max_children的值
php 5.3以上版本调整:pm.min_spare_servers和pm.max_spare_servers的值适当增加
最大值可以按内存xxMB/2/20 的整数来算,最小值可以按内存/2/40 的整数来算,可以少点或多大,可以自己调整运行看看。
************************************
如果mysql安装时开启了innodb的话,内存在4G以上可以用/usr/local/mysql/share/mysql/ (mysql5.5在5.5在/usr/local/mysql/support-files/)下面的my-innodb-heavy-4G.cnf 替换/etc/my.cnf
1-2G的话,没开启innodb的话可以用my-huge.cnf,如开启了innodb需要修改配置文件启用。
***********************************
nginx可以调整 /usr/local/nginx/conf/nginx.conf 的worker_processes
Nginx作者说的:
一般一个进程足够了,你可以把连接数设得很大。如果有SSL、gzip这些比较消耗CPU的工作,而且是多核CPU的话,可以设为和CPU的数量一样。或者要处理很多很多的小文件,而且文件总大小比内存大很多的时候,也可以把进程数增加,以充分利用IO带宽(主要似乎是IO操作有block)。
现在大部分版本上也可以设置为:worker_processes auto; 自动调整
*****************************************
所有调整均需要重启对应的程序使其生效。
建议改配置前备份一下配置文件,以便出错时恢复或查找错误。