PHP-FPM高负载的解决办法

查看付费资源请通过右侧购买区域进行购买!

这里只是介绍了php-fpm的优化方法的,但一般情况下和nginx组合使用的时候,单独优化其中一项的话,作用不是特别的大,同时还需要对nginx进行优化.nginx的做法方法参考:https://www.fangzhan100.com/559.html.上面的优化前和优化后的图,看得出前后差距还是特别的大的.

导致nginx 502 bad gateway的PHP-CGI(FASTCGI)

NGINX频爆502 BAD GATEWAY的错误,看了网上的教程,仍没有彻底解决。

目前我总结的解决502 BAD GATEWAY的方式有:

1.视服务器的性能,在php-fmp.conf里增加max_children的值,我目前用的15.

2.用reload参数定时重载php-fpm。这个主要原因是php脚本执行时间过长造成的,重载php-fpm能杜绝这个问题。如何彻底解决php-cgi脚本占用大量内存从而导致502错误的产生还值得进一步探讨,目前该做法不失为一种好办法。

具体的做法是,用crontab让php-fpm平滑重启,从而不影响PHP脚本的运行。

*/10 * * * * /usr/local/php/sbin/php-fpm reload

=================== 优化设置 =========================


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);


1.尽量少安装PHP模块,最简单是最好(快)的


2. Increas PHP FastCGI child number to 100 and even more. Sometime, 200 is OK! ( On 4GB memory server);


2.把您的PHP FastCGI子进程数调到100或以上,在4G内存的服务器上200就可以


注:我的1g测试机,开64个是最好的,建议使用压力测试获取最佳值


3. Using SOCKET PHP FastCGI, and put into /dev/shm on Linux;


3.使用socket连接FastCGI,linux操作系统可以放在 /dev/shm中


注:在php-fpm.cnf里设置<value name=”listen_address”>/tmp/nginx.socket</value>就可以通过socket连接FastCGI了,/dev/shm是内存文件系统,放在内存中肯定会快了.记得这时也要在nginx里的配置里进行修改,保持一致.


location ~ .*\.(php|php5)?$

{

#将Nginx与FastCGI的通信方式由TCP改为Unix Socket。TCP在高并发访问下比Unix Socket稳定,但Unix Socket速度要比TCP快。

fastcgi_pass  unix:/tmp/php-cgi.sock;

#fastcgi_pass  127.0.0.1:9000;

fastcgi_index index.php;

include fcgi.conf;

}


4. Increase Linux “max open files”, using the following command (must be root):


# echo ‘ulimit -HSn 65536′ >> /etc/profile

 # echo ‘ulimit -HSn 65536 >> /etc/rc.local

 # source /etc/profile 


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. Increase PHP-FPM open file description rlimit:


# vi /path/to/php-fpm.conf

 Find “<value name=”rlimit_files”>1024</value>”

 Change 1024 to 4096 or higher number.

 Restart PHP-FPM.


5. 增加 PHP-FPM 打开文件描述符的限制:


# vi /path/to/php-fpm.conf

 找到“<value name=”rlimit_files”>1024</value>”

 把1024 更改为 4096 或者更高.

重启 PHP-FPM.



6. Using PHP code accelerator, e.g eAccelerator, XCache. And set “cache_dir” to /dev/shm on Linux.

7.使用php代码加速器,例如 eAccelerator, XCache.在linux平台上可以把`cache_dir`指向 /dev/shm

This entry was posted in 服务器 and tagged nginx, php-fpm by admin. Bookmark the permalink.

Leave a Reply

You must be logged in to post a comment.

转载请说明出处
仿站网 » PHP-FPM高负载的解决办法

发表评论

您需要后才能发表评论

仿站网专注帝国cms仿站,Zblog仿站,Wordpress仿站服务,专业+效率+售后保障

关于我们 联系客服
 
QQ在线咨询
客服热线
139-3511-2134