php-fpm优化

当前内存使用情况

1
2
3
4
5
[root@cpp22 ~]# free -m
			total       used       free     shared    buffers     cached
Mem:          7870       7736        134          0       1009       5010
-/+ buffers/cache:       1716       6154
Swap:         2047          0       2047

查看php-fpm进程是否够用:

使用

1
netstat -napo |grep "php-fpm" | wc -l

查看一下当前fastcgi进程个数,如果个数接近conf里配置的上限,就需要调高进程数。

php最大执行时间的设置

如果file_get_contents请求的远程资源如果反应过慢,file_get_contents就会一直卡在那里不会超时。我们知道php.ini 里面max_execution_time 可以设置 PHP 脚本的最大执行时间,但是,在 php-cgi(php-fpm) 中,该参数不会起效。真正能够控制 PHP 脚本最大执行时间的是 php-fpm.conf 配置文件中的request_terminate_timeout参数。

pm.*的设置

如果设置成static,php-fpm进程数自始至终都是pm.max_children指定的数量,不再增加或减少。如果设置成 dynamic,则php-fpm进程数是动态的,最开始是pm.start_servers指定的数量,如果请求较多,则会自动增加, 保证空闲的进程数不小于pm.min_spare_servers,如果进程数较多,也会进行相应清理,保证多余的进程数不多于 pm.max_spare_servers。