设置$http$1;
主机 $host;
X-真实IP$;
美元;
;
我们来详细了解一下php-fpm.conf的几个重要参数:
php-fpm.conf有两个至关重要的参数,一个是“”,另一个是“meout”
我这两个设置的数值分别是“40”和“900”,但是这个值不通用,需要自己计算。
计算如下:
如果你的服务器性能足够好,并且带宽资源充足,PHP脚本没有循环或者bug,那么你可以直接将meout设置为0s。0s表示PHP-CGI会一直执行,没有时间限制。如果你做不到这一点,也就是你的PHP-CGI可能有bug,或者你的带宽不够或者其他原因导致你的PHP-CGI卡死,那么建议你给meout赋一个值,这个值可以根据你的服务器性能来设置。一般来说,性能越好设置的越高,20分钟到30分钟就可以了。由于我的服务器PHP脚本需要运行很长时间,有些可能超过10分钟,所以我设置为900秒,不会导致PHP-CGI卡死,导致502 Bad错误。
那么“”的值是怎么计算出来的呢?原则上,这个值越大越好,php-cgi进程越多,处理的速度就越快,排队的请求就越少。“”的设置也需要根据服务器的性能来设置。一般来说,正常情况下,一台服务器上每个php-cgi消耗的内存大概在20M左右。因此,我将我的“”设置为40,20M*40=800M,也就是说在峰值的时候,所有PHP-CGI消耗的内存都在800M以内,低于我的有效内存1Gb。如果我的“”设置为较小的值,比如5-10,那么php-cgi就会“很累”,处理速度会很慢,等待的时间也会比较长。 如果某个请求很久没被处理的话就会出现504 Time-out的错误,而如果正在处理的很累的php-cgi遇到问题的话就会出现502 Bad的错误。
一个例子:
我基本都是用同一个配置文件来配置lnmp组合,一直没出过问题。但是最近在一台vps上装了同样的环境之后,在线人数超过10个人的时候网站打开速度就非常慢,有好几次直接达到了nginx中设置的脚本最大超时300秒,导致nginx向客户端浏览器发送了504 Time-out错误码。经过分析,我改了几个配置文件,终于避免了这种情况的发生。
从错误码基本可以确定和nginx本身没有关系,主要是提交给php-fpm的请求没能正确反馈导致的。正常情况下,提交动态请求时,nginx会直接将请求转交给php-fpm,php-fpm会指派php-cgi进程处理相关请求,然后依次返回,最后nginx将结果反馈给客户端浏览器。但是我的vps目前跑的是纯php应用内容,其实所有用户请求都是php请求,有的耗时很长,php-cgi进程一直处于满载状态,而php-fpm本身的配置文件只开启了10组php-cgi进程,这种情况下,如果在线用户多几个,请求就无法正常处理,就会出错。
分析完原因,下面这些就比较简单了,首先改一下php-fpm的几个配置:
将之前的数值10改为现在的数值30,以便能够使用足够的php-cgi进程;
将meout由0s改为60s,这样php-cgi进程处理脚本的超时时间为60秒,可以避免所有进程被hang住,提高利用效率。
然后更改nginx的几个配置项,减少请求次数,尽量保持不变:
从 4 个 64k 到 2 个 256k;
从 64k 更改为 128K;
_size从128K更改为256K;
从 128K 更改为 256K。
OK,重新载入php-fpm和nginx的配置,再测试一下,这两周都没有出现过504 Time-out的情况,所以效果已经达到了。
另一个例子:
使用 IE 时,它运行正常。其他人使用 FF 时也运行正常。但是,有一个人报告使用 FF 时出现 502 错误。
查看后台错误日志,发现一句话
发送过大,来自
扫一扫在手机端查看
-
Tags : nginx http错误 nginx报的http错误
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。