nginx 出现504 Gateway Time-out的解决方法|云服务器 ECS - 开发者论坛

[复制链接]
查看: 14|回复: 0

28

主题

29

帖子

99

积分

注册会员

Rank: 2

积分
99
发表于 2019-2-15 22:57:06 | 显示全部楼层 |阅读模式

<div class="f14 mb10" id="read_tpc">
<span style="display:none"> #jW-&a </span>&nbsp;<br />1.问题分析<span style="display:none"> Lm~&lt;BBp. </span>&nbsp;<br /><span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=nginx',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_5">nginx</span>访问出现504 Gateway Time-out,一般是由于程序执行时间过长导致响应超时,例如程序需要执行90秒,而nginx最大响应等待时间为30秒,这样就会出现超时。 <span style="display:none"> :>{!%-1Z </span>&nbsp;<br />&nbsp;&nbsp;<span style="display:none"> tngB;9c+w </span>&nbsp;<br />通常有以下几种情况导致<span style="display:none"> M%`CzCL
u </span>&nbsp;<br /><span style="display:none"> k\ .9iI'6 </span>&nbsp;<br /><span style="display:none"> 'Og@&lt;~/Xy </span>&nbsp;<br />1.程序在处理大量<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=数据',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_1">数据</span>,导致等待超时。 <span style="display:none"> :vb5J33U </span>&nbsp;<br />2.程序中调用外部请求,而外部请求响应超时。 <span style="display:none"> olv?$]
</span>&nbsp;<br />3.连接<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=数据库',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_2">数据库</span>失败而没有停止,死循环重新连。<span style="display:none"> 2P^|juc)sU </span>&nbsp;<br /><span style="display:none"> yiQ?pM </span>&nbsp;<br /><span style="display:none"> 1#6emMV.` </span>&nbsp;<br />出现这种情况,我们可以先<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=优化',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_7">优化</span>程序,缩短执行时间。另一方面,可以调大nginx超时限制的<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=参数',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_6">参数</span>,使程序可以正常执行。<span style="display:none"> 1*u]v{JJ( </span>&nbsp;<br /><span style="display:none"> (T#$0RFq </span>&nbsp;<br /><span style="display:none"> ih".y3 </span>&nbsp;<br />对于访问超时的设定,nginx与<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=php',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_3">php</span>都有相关的设置,可以逐一进行<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=修改',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_4">修改</span>。<span style="display:none"> MGm*({% </span>&nbsp;<br /><span style="display:none"> PM[_0b </span>&nbsp;<br /><span style="display:none"> / S]RP>cQ </span>&nbsp;<br /><span style="display:none"> \L(cFjLIl </span>&nbsp;<br /><span style="display:none">  /RJ </span>&nbsp;<br /><span style="display:none"> ;yomaAr </span>&nbsp;<br /><span style="display:none"> 1OM Xg=Y </span>&nbsp;<br />2.解决方法<span style="display:none"> NS z } </span>&nbsp;<br />nginx配置<span style="display:none"> ; zJb("n </span>&nbsp;<br /><span style="display:none"> H9(?yI@Zr# </span>&nbsp;<br /><span style="display:none"> sWo`dZ\6WB </span>&nbsp;<br />nginx.conf中,设置以下几个参数,增加超时时间<span style="display:none"> 4-.K&lt;-T%D </span>&nbsp;<br /><span style="display:none"> :,0(aB </span>&nbsp;<br /><span style="display:none"> 7yfh4-1M </span>&nbsp;<br />fastcgi_connect_timeout <span style="display:none"> kP%hgZ </span>&nbsp;<br />fastcgi连接超时时间,默认60秒<span style="display:none"> *yRsFC{, </span>&nbsp;<br /><span style="display:none"> $o?U= </span>&nbsp;<br /><span style="display:none"> Sk|e#{ </span>&nbsp;<br />fastcgi_send_timeout <span style="display:none"> =:s`C,l.4 </span>&nbsp;<br />nginx 进程向 fastcgi 进程发送请求过程的超时时间,默认值60秒<span style="display:none"> M9W
zsWM </span>&nbsp;<br /><span style="display:none"> +Umsr </span>&nbsp;<br /><span style="display:none"> %i9 e&lt;.Ot </span>&nbsp;<br />fastcgi_read_timeout <span style="display:none"> nvd\UM </span>&nbsp;<br />fastcgi 进程向 nginx 进程发送输出过程的超时时间,默认值60秒 <span style="display:none"> 9Y,JYc# </span>&nbsp;<br /><span style="display:none"> *,$5EN </span>&nbsp;<br /><span style="display:none"> N@c        G jpQ </span>&nbsp;<br /><span style="display:none"> X
61|:E </span>&nbsp;<br /><span style="display:none"> fIoc)T </span>&nbsp;<br />php配置<span style="display:none"> }i~k:kmV </span>&nbsp;<br /><span style="display:none"> &|k=mxox\ </span>&nbsp;<br /><span style="display:none"> wN!\$i@E: </span>&nbsp;<br />php.ini<span style="display:none"> 
B(;MI` </span>&nbsp;<br /><span style="display:none"> vdq=F|& </span>&nbsp;<br /><span style="display:none"> !l
$d^y345 </span>&nbsp;<br />max_execution_time <span style="display:none"> Zt!#KSF7% </span>&nbsp;<br />php脚本最大执行时间 <span style="display:none"> S/`#6  </span>&nbsp;<br />&nbsp;&nbsp;<span style="display:none"> 'Bue* </span>&nbsp;<br />php-fpm<span style="display:none"> @Ul3J )=m </span>&nbsp;<br /><span style="display:none"> dBXiLrEbs </span>&nbsp;<br /><span style="display:none"> 7~XC_Yc1 </span>&nbsp;<br />request_terminate_timeout <span style="display:none"> .]vb\NBK7 </span>&nbsp;<br />设置单个请求的超时时间<span style="display:none"> YcobK#c </span>&nbsp;<br /><span style="display:none"> /qIQE&V- </span>&nbsp;<br /><span style="display:none"> xQFY/Z </span>&nbsp;<br />&nbsp;&nbsp;<span style="display:none"> '. "_TEIF </span>&nbsp;<br />php程序中可加入set_time_limit(seconds)设置最长执行时间<span style="display:none"> h        vYRAQR: </span>&nbsp;<br /><span style="display:none"> [K3
te </span>&nbsp;<br /><span style="display:none">         |c/=9Bb </span>&nbsp;<br />例如 set_time_limit(0) 表示不超时。
</div>
</div>
<!--content_read-->
</td>
</tr>
<tr>
腾讯云
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )