PHP-FPM 的参数优化

PHP-FPM 是 LNMP 最常见的一种运行方式了,不过会经常 502 ,那么怎么样才能避免 502 或者说减少 502 的发生呢?如果你的 VPS 是高配置的,怎么样才能充分用上高配的好处呢?好吧,米饭今天来教你!
本文今天参考了很多的 PHP-FPM 教程,也算是米饭比较珍贵的学习笔记吧,珍藏版,欢迎共享!本篇只介绍 PHP-FPM 的运行方式,mod_php 啥的是不通用的,要知道 mod_php 是最优秀的 PHP 运行方式啦,处理动态最牛逼拉,不会 502 。
本文参考:
blog.linuxeye.com/380.html
blog.sina.com.cn/s/blog_4beab9e20101dqp8.html
wiki.linuxk.it/wiki/Addsite
blog.csdn.net/dc_726/article/details/12340349
java-er.com/blog/nginx-php-fpm-speed/
1.精简 PHP 模块,尽量少安装,如果不用就不安装。
其实米饭以前一直认为模块自然是越多越好月方便咯,但其实不是的,像我们使用 Wordrpess 其实并不需要用到 Mysqli 和 Pdo_mysql 的我们就可以不安装拉。 这也是编译安装的好处,像用源安装就比较杯具了,会安装一堆。
2.通过压力测试,调整 FastCGI 子进程数
通过自己对自己的网站经行压力测试来调整 FastCGI 子进程数,当然了越多进程数就会占用越多的内存。一般话大内存我们可以调整到 100 以上。像 1G 内存建议调整为 64 。
3.使用 socket 来连接PHP
通过 socket 连接 FastCGI,/dev/shm 是内存文件系统,socket 放在内存中肯定会变得快!不过 TCP 方式在高并发下比 socket 要来的稳定的些。
例如:<value name=”listen_address”>/tmp/nginx.socket</value>
4.Linux下增加文件打开数
方法一:
echo ‘ulimit -HSn 65536′ >> /etc/profile echo ‘ulimit -HSn 65536′ >> /etc/rc.local source /etc/profile
方法二:
cat >> /etc/security/limits.conf <<EOF * soft nproc 65535 * hard nproc 65535 * soft nofile 65535 * hard nofile 65535 EOF
5.增加 PHP-FPM 打开文件描述符的限制
# vi php-fpm.conf rlimit_files = 51200
把1024 改的更高。
6.使用php代码加速器
推荐使用:Zend Opcache , Xcache ,APCu(APC)
7.增加 Swap 交换文件
增加突发高并发情况下的稳定性,除 OpenVZ 虚拟化之外几乎都是可以添加 Swap 的。
8.选择进程管理方式
自定义 PHP FPM 的 Master 进程管理该站点PHP进程的方式,可选的有:static,dynamic,ondemand。其中常用的为 static 或 dynamic ,是静态或动态方式,动态适合小内存机器,灵活分配进程,省内存。静态适用于大内存机器,动态创建回收进程对服务器资源也是一种消耗。如果是静态方式,那么在php-fpm启动的时候就创建了指定数目的进程,在运行过程中不会再有变化(并不是真的就永远不变);而动态的则在运行过程中动态调整,当然并不是无限制的创建新进程,受 pm.max_spare_servers 参数影响。
9.设置 FastCGI Cache
FastCGI Cache能非常有效的降低PHP对服务器资源的占用,可以简单理解为把PHP网页缓存为静态页。设置较为复杂,请自行搜索。
10.修改 php-fpm.conf 参数
pm.max_children = 24static模式下创建的子进程数或dynamic模式下同一时刻允许最大的php-fpm子进程数量
pm.start_servers = 16#动态方式下的起始php-fpm进程数量
pm.min_spare_servers = 12#动态方式下服务器空闲时最小php-fpm进程数量
pm.max_spare_servers = 24 本文来自:http://www.mf8.biz/