高负载网站使用PHP-FPM管理FastCGI:
1.尽量少安装PHP模块,最简单是最好(快)的
2.把您的PHP FastCGI子进程数调到100或以上,在4G内存的服务器上200就可以
注:我的1g测试机,开64个是最好的,建议使用压力测试获取最佳值
3.使用socket连接FastCGI,linux操作系统可以放在 /dev/shm中
注:在php-fpm.cnf里设置< value name="listen_address">/tmp/nginx.socket< /value>就可以通过socket连接 FastCGI了,/dev/shm是内存文件系统,放在内存中肯定会快了
4.调高linux内核打开文件数量,可以使用这些命令(必须是root帐号)
echo 'ulimit -HSn 65536' >> /etc/profile
echo 'ulimit -HSn 65536' >> /etc/rc.local
source /etc/profile
注:我是修改/etc/rc.local,加入ulimit -SHn 51200的
5. 增加 PHP-FPM 打开文件描述符的限制:
vi /path/to/php-fpm.conf
找到“< value name="rlimit_files">1024< /value>”
把1024 更改为 4096 或者更高.
重启 PHP-FPM.
6.使用php代码加速器,例如 eAccelerator, XCache.在linux平台上可以把`cache_dir`指向 /dev/shm
如果出现如下问题:
发现/usr/local/webserver/php/etc/php-fpm.conf文件里定义的打开文件描述符的限制数量是
< value name="rlimit_files">51200< /value>
但用 命令ulimit -n查看,发现只有1024
并且已在/etc/rc.local里添加了
ulimit -SHn 51200
确没生效
解决办法:
vi /etc/security/limits.conf
文件最后加上
* soft nofile 51200
* hard nofile 51200
1.尽量少安装PHP模块,最简单是最好(快)的
2.把您的PHP FastCGI子进程数调到100或以上,在4G内存的服务器上200就可以
注:我的1g测试机,开64个是最好的,建议使用压力测试获取最佳值
3.使用socket连接FastCGI,linux操作系统可以放在 /dev/shm中
注:在php-fpm.cnf里设置< value name="listen_address">/tmp/nginx.socket< /value>就可以通过socket连接 FastCGI了,/dev/shm是内存文件系统,放在内存中肯定会快了
4.调高linux内核打开文件数量,可以使用这些命令(必须是root帐号)
echo 'ulimit -HSn 65536' >> /etc/profile
echo 'ulimit -HSn 65536' >> /etc/rc.local
source /etc/profile
注:我是修改/etc/rc.local,加入ulimit -SHn 51200的
5. 增加 PHP-FPM 打开文件描述符的限制:
vi /path/to/php-fpm.conf
找到“< value name="rlimit_files">1024< /value>”
把1024 更改为 4096 或者更高.
重启 PHP-FPM.
6.使用php代码加速器,例如 eAccelerator, XCache.在linux平台上可以把`cache_dir`指向 /dev/shm
如果出现如下问题:
发现/usr/local/webserver/php/etc/php-fpm.conf文件里定义的打开文件描述符的限制数量是
< value name="rlimit_files">51200< /value>
但用 命令ulimit -n查看,发现只有1024
并且已在/etc/rc.local里添加了
ulimit -SHn 51200
确没生效
解决办法:
vi /etc/security/limits.conf
文件最后加上
* soft nofile 51200
* hard nofile 51200
hp 5.3.3 源码中开始包含 php-fpm,不用专门再打补丁了,只需要解开源码直接configure,关于php-fpm的编译参数有 –enable-fpm –with-fpm-user=www –with-fpm-group=www –with-libevent-dir=libevent位置。
这个php-fpm 不再支持 php-fpm 补丁具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,需要使用信号控制:
master进程可以理解以下信号
SIGINT, SIGTERM 立刻终止
SIGQUIT 平滑终止
SIGUSR1 重新打开日志文件
SIGUSR2 平滑重载所有worker进程并重新载入配置和二进制模块
SIGQUIT 平滑终止
SIGUSR1 重新打开日志文件
SIGUSR2 平滑重载所有worker进程并重新载入配置和二进制模块
示例:
php-fpm 关闭:
kill -SIGINT `cat /usr/local/php/var/run/php-fpm.pid`
php-fpm 重启:
kill -SIGUSR2 `cat /usr/local/php/var/run/php-fpm.pid`
php-fpm 关闭:
kill -SIGINT `cat /usr/local/php/var/run/php-fpm.pid`
php-fpm 重启:
kill -SIGUSR2 `cat /usr/local/php/var/run/php-fpm.pid`
其次配置文件不再使用的xml 格式,改为了INI,但是配置参数几乎和以前一样,可参照xml格式的格式配置。
转载于:https://blog.51cto.com/flandycheng/432539