当前位置:首页 > 电脑常识 > 正文

out错误 完美解决方案 8090安适门户

11-21 电脑常识

在安置完Nginx+PHP-fpm+Mysql后,跑PHP的应用会经常呈现504 Gateway Time-out 或者502 Bad Gateway的情况。

Nginx 504 Gateway Time-out 的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的 PHP-CGI。这种情况可能是由于 nginx 默认的 fastcgi 进程响应的缓冲区太小造成的, 这将导致 fastcgi 进程被挂起, 如果你的 fastcgi 处事对这个挂起措置惩罚惩罚的欠好, 那么最后就极有可能导致 504 Gateway Time-out。

14223381403333875

一般看来, 这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的, 这将导致fastcgi进程被挂起, 如果你的fastcgi处事对这个挂起措置惩罚惩罚的欠好, 那么最后就极有可能导致504 Gateway Time-out
此刻的网站, 尤其某些论坛有大量的答复和很多内容的, 一个页面甚至有几百K
默认的fastcgi进程响应的缓冲区是8K, 我们可以设置大点

在nginx.conf里, 插手:

fastcgi_buffers 8 128k

这暗示设置fastcgi缓冲区为8×128k
固然如果您在进行某一项即时的操纵, 可能需要nginx的超时参数调大点, 例如设置成60秒:

send_timeout 60;

我只是调解了这两个参数, 功效就是没有再显示阿谁超时, 可以说效果不错

这个问题迟误了我差不久不多4个小时的时间,网上有很多前辈们的解决要领,在这里记录下解决这个问题的思路。首先这个问题主要是因为PHP的Script执行时间太长了,已经赶过nginx能接受的底线

在nginx的日志中会看到这样的log

2012/08/11 13:39:45 [error] 30788#0: *1 upstream timed out (110: Connection timed out)

while reading response header from upstream, client: 127.0.0.1, server:

request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.cr173.com

在php-fpm的日志中会发明这样的log

2012/08/11 13:39:45 [error] 30788#0: *1 upstream timed out (110: Connection timed out)

while reading response header from upstream, client: 127.0.0.1, server:

request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.cr173.com"

一般来说,呈现这样的情况是因为Nginx会从php-fpm的9000端口读取fastcgi的执行功效,等来N久都不见答复,所以就报504了。解决步伐很简单,改削php的最长执行时间

; Maximum execution time of each script, in seconds; ;

Note: This directive is hardcoded to 0 for the CLI SAPI;

fix by Matt 2012.8.11

;max_execution_time = 3000

在这里我注释失php.ini参数的时间限制。还有php-fpm里的

;request_terminate_timeout = 0

这个参数会在php.ini中max_execution_time因为某些原因不能正常事情才会生效。

之前设置的是300s,安置Magento的时候就一直就报504。后来索性改削到3000了。在Nginx的配置文件添加

#add by Matt 2012.8.11

fastcgi_read_timeout 3000;

fastcgi_connect_timeout 3000;

fastcgi_send_timeout 3000;

Magento你到底安置几多sql文件啊?

PS:有时候缓存过小也会引起504,具体情况还需要按照Nginx的日志内容来分析。改削fastcgi的缓存巨细:

fastcgi_buffers 2 256k;

fastcgi_buffer_size 128k;

fastcgi_busy_buffers_size 256k;

fastcgi_temp_file_write_size 256k;

VPS呈现Nginx 504 Gateway time-out错误

西西 只对 Nginx.conf 和 php-fpm.conf 两个配置文件做了一些改削,不雅察看一段时间,看看效果。

1.将 Nginx.conf 配置文件中相应参数设置为如下:

命令:vi /usr/local/nginx/conf/nginx.conf (lnmp.org出品的lnmp一键安置包路径,其它请自行找目录)

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;

2.将 php-fpm.conf 配置文件中相应参数设置为如下值:

命令:vi /usr/local/php/etc/php-fpm.conf (lnmp.org出品的lnmp一键安置包路径,其它请自行找目录)

<value>9</value>(西西 采办的vps内存较小所以不能设置太大,应按照你的内存来设置)

<value>600s</value>(按照具体情况设置,详请查阅参考文章)

<value name=”style”>apache-like </value>(php-fpm的默认静态措置惩罚惩罚方法会使得php-cgi的进程恒久占用内存而无法释放,这也是导致nginx堕落的原因之一,因此可以将php-fpm的措置惩罚惩罚方法改成apache模式。)

温馨提示: 本文由杰米博客推荐,转载请保留链接: https://www.jmwww.net/file/pc/13113.html

博客主人杰米WWW
杰米博客,为大家提供seo以及it方面技巧喜欢的朋友收藏哦!
  • 11365文章总数
  • 1378074访问次数
  • 建站天数
  •