Board logo

标题: [求助] 关于504 php-fpm请admin看看 [打印本页]

作者: Miraco    时间: 2012-4-12 20:55     标题: 关于504 php-fpm请admin看看

机器配置不错。网站是Wordpress的。访问几十IP,批量更新多内容的是必定504错误!
google和baidu都说修改php-fpm就能解决,但是WDCP我一直找不到php-fpm,admin之前说过的那个目录页找不到,说是lanmp是没有php-fpm的,是不是还要安装额外模块的?

因为baidu和google能解决504的人很多都是N+A的,但是都是说修改php-fpm就能解决。希望admin帮忙看看这个。

貌似论坛提到504的不止我一个人了。。。

谢谢!
作者: Miraco    时间: 2012-4-12 21:05

再看看好像是要安装php-pfm模块的?不知道admin能否指点如何安装和配置?不知道直接安装加入到现有的WDCP中会不会引起其他问题或者风险。盼指点。谢谢!
作者: shcnmartin    时间: 2012-4-13 03:26

我也出现这个问题,配置文件在/www/wdlinux/etc/下面,可以参照网上教程改设置。默认的设置不适合大流量
作者: admin    时间: 2012-4-13 08:50

在N+A里,根本就用不到php-fpm
你可以调整下nginx.conf的部分参数
作者: shcnmartin    时间: 2012-4-13 11:19

回复 4# admin


   N+A不一定是nginx把php请求转给apache的。可能是apache跑wdcp,nginx用fcgi调用php。php-fpm.conf里面一些参数,比如说最大进程,超时时间都可以调整大一点
作者: admin    时间: 2012-4-13 12:01

什么叫N+A?

wdcp的apache是独立的,跟前端的web环境没关
作者: Miraco    时间: 2012-4-13 16:02

什么叫N+A?

wdcp的apache是独立的,跟前端的web环境没关
admin 发表于 2012-4-13 12:01


也就是说WDCP里我用Nginx就是Nginx同时处理PHP的了?不是Nginx收到PHP请求的时候会转发给Apache处理?

意思是不管静态html之类的还是PHP之类的都是Nginx单独处理的? 之前用Lu以及LNMPA好像都是PHP会传递给后端的Apache的,所以以为WDCP也是。。。
作者: admin    时间: 2012-4-13 18:57

回复  admin


   N+A不一定是nginx把php请求转给apache的。可能是apache跑wdcp,nginx用fcgi调用php。 ...
shcnmartin 发表于 2012-4-13 11:19



什么叫N+A?

再有,wdcp的后台是独立的,也就是后台的apache是独立的,跟前端的web环境没关
作者: kazaff    时间: 2012-8-20 10:27

什么叫N+A?

wdcp的apache是独立的,跟前端的web环境没关
admin 发表于 2012-4-13 12:01



是只有wdcp后台才直接用apache的?那个人项目呢?是不是N转发给A来处理PHP请求?
作者: admin    时间: 2012-8-20 15:18

这个跟个人项目或什么项目没什么关系

而跟用到哪个环境有关系
作者: xiaoxiao0    时间: 2012-8-30 22:41

讨论都是没用的,给个最终504的解决办法啊,IP超过5万就挂了
作者: bjjdwx    时间: 2012-11-23 16:09

有具体解决方案吗
作者: xiaoxiao0    时间: 2013-1-8 15:36

回复 4# admin

老大能不能给个具体的这个nginx.conf在什么问题之,需要修改哪几个参数?流量一大网站就挂了啊,需要重启服务器几次才解决,怎么办啊
作者: 网络飞车    时间: 2013-1-9 00:48

完美解决Nginx 504 Gateway time-out
 最近用dedecms建的一个网站新增了大批内容,有三个栏目的内容量都超过了两千篇,超过两千三百篇的两个栏目在生成栏目列表的时候就出现了504 Gateway time-out 服务器用的是nginx,我不是很懂,服务器维护人员在网上随便找了一篇文章,修改了nginx的缓存设置,不管用,他就不管了,可是我不能不管啊,不能生成列表页面,那后面的内容不是都不能用了么?  把数据库下载到本地,在本地配置了nginx,试了很多遍,都不行,又改到Apache下面,更夸张,生成了83个页面就不能继续了,看来还是nginx更厉害一点,虽然出现504 Gateway time-out,但好歹能够全部生成。
  只好又继续在网上找更多的解决办法,尝试了N多次以后,终于让我找到了一个有用的方法,想想以后可能还有碰到这样的问题,就把那篇文章复制过来放在这里,供以后参考吧,对有同样问题的朋友也是一个帮助。
        下面部分是引用部分,我自己不懂技术的,在我的dedecms5.6里面有用,别人的自己尝试吧。

  Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止。
  Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI。
  解决这两个问题其实是需要综合思考的,一般来说Nginx 502 Bad Gateway和php-fpm.conf的设置有关,而Nginx 504 Gateway Time-out则是与nginx.conf的设置有关。
  而正确的设置需要考虑服务器自身的性能和访客的数量等多重因素。
  以我目前的服务器为例子CPU是奔四1.5G的,内存1GB,CENTOS的系统,访客大概是50人左右同时在线。
  但是在线的人大都需要请求PHP-CGI进行大量的信息处理,因此我将nginx.conf设置为:
  fastcgi_connect_timeout 300s;
  fastcgi_send_timeout 300s;
  fastcgi_read_timeout 300s;
  fastcgi_buffer_size 128k;
  fastcgi_buffers 8 128k;#8 128
  fastcgi_busy_buffers_size 256k;
  fastcgi_temp_file_write_size 256k;
  fastcgi_intercept_errors on;
  这里最主要的设置是前三条,即
  fastcgi_connect_timeout 300s;
  fastcgi_send_timeout 300s;
  fastcgi_read_timeout 300s;
  这里规定了PHP-CGI的连接、发送和读取的时间,300秒足够用了,因此我的服务器很少出现504 Gateway Time-out这个错误。最关键的是php-fpm.conf的设置,这个会直接导致502 Bad Gateway和504 Gateway Time-out。
  下面我们来仔细分析一下php-fpm.conf几个重要的参数:
  php-fpm.conf有两个至关重要的参数,一个是”max_children”,另一个是”request_terminate_timeout”
  我的两个设置的值一个是”40″,一个是”900″,但是这个值不是通用的,而是需要自己计算的。
  计算的方式如下:
  如果你的服务器性能足够好,且宽带资源足够充足,PHP脚本没有系循环或BUG的话你可以直接将”request_terminate_timeout”设置成0s。0s的含义是让PHP-CGI一直执行下去而没有时间限制。而如果你做不到这一点,也就是说你的PHP-CGI可能出现某个BUG,或者你的宽带不够充足或者其他的原因导致你的PHP-CGI能够假死那么就建议你给”request_terminate_timeout”赋一个值,这个值可以根据你服务器的性能进行设定。一般来说性能越好你可以设置越高,20分钟-30分钟都可以。由于我的服务器PHP脚本需要长时间运行,有的可能会超过10分钟因此我设置了900秒,这样不会导致PHP-CGI死掉而出现502 Bad gateway这个错误。
  而”max_children”这个值又是怎么计算出来的呢?这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会很少。设置”max_children”也需要根据服务器的性能进行设定,一般来说一台服务器正常情况下每一个php-cgi所耗费的内存在20M左右,因此我的”max_children”我设置成40个,20M*40=800M也就是说在峰值的时候所有PHP-CGI所耗内存在800M以内,低于我的有效内存1Gb。而如果我的”max_children”设置的较小,比如5-10个,那么php-cgi就会“很累”,处理速度也很慢,等待的时间也较长。如果长时间没有得到处理的请求就会出现504 Gateway Time-out这个错误,而正在处理的很累的那几个php-cgi如果遇到了问题就会出现502 Bad gateway这个错误。
作者: 网络飞车    时间: 2013-1-9 00:51

如果用的NGINX 建议把进程和时间整大点 前几天我的服务器就是这样老出现502 504 每次一挂 我就重启web 结果还是要挂 后来修改了 时间和进程 后比以前好多了。




欢迎光临 WDlinux官方论坛 (http://wdlinux.cn/bbs/) Powered by Discuz! 7.2