国语自产精品视频在线看:您身边最放心的安全下载站! 最新软件|热门排行|软件分类|软件专题|厂商大全

国语自产精品视频在线看

技术教程
您的位置:首页服务器类Web服务器 → 解决 502、504 Gateway Time-out(nginx)

解决 502、504 Gateway Time-out(nginx)

我要评论 2012/11/29 20:52:24 来源:国语自产精品视频在线看 编辑:zbbingyang.com [ ] 评论:0 点击:466次

504 Gateway Time-out问题常见于使用🦗nginx作为【zuò wéi】🛂web server的服务器的网【qì de wǎng】😲站【zhàn】

我遇到🔐这个问题是在【tí shì zài】升级discuz论坛的【lùn tán de】😒时候遇到的【dào de】💍

一般看【yī bān kàn】来, 这种情况可能💭是由于🔸nginx默认的🈚fastcgi进程响应的缓🎂冲区太【chōng qū tài】小造成的, 这将导致💩fastcgi进程被【jìn chéng bèi】挂起, 如果你📱的fastcgi服务对【fú wù duì】这个挂起处理的不好💖, 那么最后就极有可能【yǒu kě néng】导致💩504 Gateway Time-out
现在的【xiàn zài de】🐣网站, 尤其某【yóu qí mǒu】些论坛【xiē lùn tán】👪有大量【yǒu dà liàng】🔈的回复🎈和很多内容的, 一个页面甚至有几百【yǒu jǐ bǎi】👋K
默认的🈚fastcgi进程响应的缓🎂冲区是【chōng qū shì】8K, 我们可以设置大点【dà diǎn】
在【zài】👑nginx.conf里👭, 加入【jiā rù】:

fastcgi_buffers 8 128k

这表示设置fastcgi缓冲区【huǎn chōng qū】为8×128k
当然如🕢果您在进行某一项即📦时的操【shí de cāo】作, 可能需🚆要【yào】nginx的超时💳参数调【cān shù diào】💊大点, 例如设【lì rú shè】置成60秒【miǎo】🙂:

send_timeout 60;

我只是【wǒ zhī shì】🐃调整了这两个参数【cān shù】, 结果就【jié guǒ jiù】是没有🏰再显示🐬那个超时【shí】➖, 可以说🍘效果不错, 但是也🔍可能是【kě néng shì】🏮由于其他的原因, 目前关🚦于nginx的资料🚒不是很【bú shì hěn】多【duō】, 很多事【hěn duō shì】🍪情都需要长期的经验累计才有结果, 期待您【qī dài nín】的发现【de fā xiàn】哈!

Nginx 502 Bad Gateway的含义【de hán yì】🔞是请求的【de】🃏PHP-CGI已经执【yǐ jīng zhí】行✌,但是由于某种原因🚞(一般是读取资源的【de】问📵题【tí】)没有执行完毕📐而导致PHP-CGI进程终【jìn chéng zhōng】止【zhǐ】。

Nginx 504 Gateway Time-out的含义是所请求的网👩关没有请【méi yǒu qǐng】求到,简单来【jiǎn dān lái】✳说就是📯没有请【méi yǒu qǐng】求到可以执行【yǐ zhí háng】🦗的PHP-CGI。

解决这♊两个问题其实是需要综合思🆑考的【kǎo de】,一般来说【shuō】Nginx 502 Bad Gateway和【hé】php-fpm.conf的设置【de shè zhì】📴有关,而Nginx 504 Gateway Time-out则是与nginx.conf的设置【de shè zhì】📴有关。
而正确【ér zhèng què】的设置【de shè zhì】📴需要考😣虑服务器自身的性能【de xìng néng】🤱和【hé】访客的数量等多重💏因素【yīn sù】。
以我目【yǐ wǒ mù】🧘前的服务器为【wù qì wéi】💤例子💲CPU是奔四【shì bēn sì】1.5G的,内存1GB,CENTOS的系统🐖,访客大概是50人左右【rén zuǒ yòu】✅同时在【tóng shí zài】线【xiàn】。
但是在🧔线【xiàn】的人大都需🤘要请求PHP-CGI进行大量的信🤣息处理【xī chù lǐ】,因此我🦕将nginx.conf设置为【shè zhì wéi】:
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;
这里最🎢主要的🏦设置是📫前三条【qián sān tiáo】🏇,即
fastcgi_connect_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_read_timeout 300s;
这里规定了👏PHP-CGI的连接、发送和【hé】读取的【dú qǔ de】时间,300秒足够🥗用了【yòng le】,因此我🦕的服务器很少出现504 Gateway Time-out这个错【zhè gè cuò】误【wù】。最关键【zuì guān jiàn】的是🆙php-fpm.conf的设置【de shè zhì】📴,这个会直接导【zhí jiē dǎo】致【zhì】502 Bad Gateway和【hé】504 Gateway Time-out。
下面我们来仔【men lái zǎi】细分析一下php-fpm.conf几个重😇要的参数:

php-fpm.conf有两个至关重要的参数,一个是【shì】🚹”max_children”,另一个是【shì】🚹”request_terminate_timeout”
我的两个设置【gè shè zhì】的值一【de zhí yī】⤵个是【shì】🥩”40″,一个是【shì】🚹”900″,但是【shì】这💳个值不🌟是【shì】🥩通用的,而是【shì】需🌤要自己【yào zì jǐ】计算的【jì suàn de】📰。
计算的【jì suàn de】📰方式如【fāng shì rú】下【xià】🍧:
如果你【rú guǒ nǐ】的服务📆器性能足够好,且宽带资源足够充足🖐,PHP脚本没🗜有系循环或【huán huò】BUG的话你可以直接将【jiē jiāng】”request_terminate_timeout”设置成0s。0s的含义【de hán yì】是让【shì ràng】🛤PHP-CGI一直执【yī zhí zhí】行下【háng xià】🍧去而没【qù ér méi】有时间限⭕制🦋。而如果👧你做不【nǐ zuò bú】🏴到这一点,也就是【shì】🥩说你的【shuō nǐ de】🐇PHP-CGI可能出【kě néng chū】现某个【xiàn mǒu gè】🔞BUG,或者你🍖的宽带不够充【bú gòu chōng】足🖐或者其他的原因导致你的【nǐ de】PHP-CGI能够假死那么就建议你给🧓”request_terminate_timeout”赋一个【fù yī gè】值⛳,这个值🎆可以根据你服务器的性能进行设定🕍。一般来说性能【shuō xìng néng】🔈越好你可以设【kě yǐ shè】置越高🚂,20分钟-30分钟都【fèn zhōng dōu】可以。由于我【yóu yú wǒ】的服务📆器PHP脚本需♑要长时间运行【jiān yùn háng】,有的可能会超💤过10分钟因【fèn zhōng yīn】此我设置了【zhì le】900秒,这样不🌚会导致【huì dǎo zhì】PHP-CGI死掉而出现502 Bad gateway这个错🙊误😜。

而”max_children”这个值【zhè gè zhí】又是怎🍯么计算出来的【chū lái de】⚽呢?这个值【zhè gè zhí】原则上是越大越好,php-cgi的【de】⚽进程多了就🐩会【huì】处理的【chù lǐ de】🤽很快,排队的【de】💇请求就会【huì】⌚很少【hěn shǎo】。设置【shè zhì】🍆”max_children”也需要根据服👜务器的【wù qì de】⚽性能进行设定👍,一般来🈺说一台【shuō yī tái】🃏服务器正常情况下每一个【yī gè】php-cgi所耗费的【de】内存【cún】📧在20M左右,因此我🐾的【de】⚽”max_children”我设置【wǒ shè zhì】⚽成40个,20M*40=800M也就是说在峰值的【de】⚽时候所有【yǒu】🔫PHP-CGI所耗内存在【cún zài】800M以内【yǐ nèi】,低于我的【wǒ de】🚊有效内【yǒu xiào nèi】存【cún】1Gb。而如果我的【wǒ de】🚊”max_children”设置【shè zhì】🍆的【de】⚽较小【jiào xiǎo】,比如5-10个,那么【nà me】php-cgi就会【huì】⌚“很累🕸”,处理速【chù lǐ sù】度也很慢,等待的【děng dài de】⚽时间也较长⏭。如果长时间没🌊有【yǒu】得到处理的【chù lǐ de】🤽请求就会【huì】⌚出现【chū xiàn】504 Gateway Time-out这个错误【wù】,而正在【ér zhèng zài】💂处理的【chù lǐ de】🤽很累🕸的【de】⚽那几个🕚php-cgi如果遇🧞到了问题就会【huì】🥎出现【chū xiàn】502 Bad gateway这个错误【wù】。

关键词:nginx

阅读本文后您有什么感想? 已有 人给出评价!

  • 2 欢迎喜欢
  • 3 白痴
  • 2 拜托
  • 3 哇
  • 2 加油
  • 136 鄙视