2023-04-23 23:21:19 阅读( 5810)
在CentOS下配置lnmp组合基本上用的都是同样的配置文件,一直都没出现过问题,可最近在一个vps上安装同样的环境之后,网站在线10多人就出现了打开速度非常缓慢的情况,有好几次都是直接达到了nginx中设置的脚本最大超时时间300秒,结果导致nginx往客户端浏览器发送
在centos下配置lnmp组合基本上用的都是同样的配置文件,一直都没出现过问题,可最近在一个vps上安装同样的环境之后,网站在线10多人就出 现了打开速度非常缓慢的情况,有好几次都是直接达到了nginx中设置的脚本最大超时时间300秒,结果导致nginx往客户端浏览器发送了一个504 Gateway 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的几个配置:
将max_children从之前的10改为现在的30,这样可以保证足够的php-cgi进程可以使用;
将request_terminate_timeout由0s改为60s,这样php-cgi进程处理脚本的超时为60s,可以防止所有进程被挂起,提高利用效率。
接着再更改nginx的几个配置项,减少FastCGI的请求次 数,尽量维持buffers不变:
fastcgi_buffers由4 64k改为2 256k
fastcgi_buffer_size由64k改为128K
fastcgi_busy_buffers_size由128K改为256K
Fastcgi _ temporary _ file _ write _ size changed from 128K to 256K.
好了,重新加载php-fpm和nginx的配置,再测试一遍。到现在两周没有504网关超时,这是一个效果。
另外,php-fpm默认的静态处理模式会使php-cgi的进程长时间占用内存而无法释放,这也是nginx出错的原因之一,所以可以将php-fpm的处理模式改为apache模式。
value name="style "类似阿帕奇/价值
从更改完毕到现在的测试表明上述方式的效果还是很明显的,并没有发现一次Nginx502 bad gateway或504 Gateway Time-out错误。当然,如果你的VPS或者服务器的性能足够好可以根据具体情况不必做无谓的改动。
猜你喜欢
Guessyoulike