nginx+apache 502 Bad Gateway 深度思考

广告位招租
扫码页面底部二维码联系

502 Bad Gateway是ngin【作者:唐霜】本文作者:唐霜,转载请注明出处。x服务器上面经常遇到的问题,但是在网上查【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】找资料的时候,95%的资料都是在讨论ng本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.netinx+php-fpm的环境下如何如何处本文作者:唐霜,转载请注明出处。【本文受版权保护】理。而我的环境是nginx + apac本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。he,为了把这个问题搞清楚,我希望通过这【作者:唐霜】【本文受版权保护】篇文章,能深入的对这个问题的解决思路做一【转载请注明来源】本文作者:唐霜,转载请注明出处。个梳理。

未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net

502是nginx返回的错误转载请注明出处:www.tangshuang.net

【访问 www.tangshuang.net 获取更多精彩内容】【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。

所有的502都是nginx返回的,在错误本文作者:唐霜,转载请注明出处。【未经授权禁止转载】页面也可以看到只有nginx作为标识,没【转载请注明来源】【版权所有】唐霜 www.tangshuang.net有看到apache。这说明502是在ng【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.netinx这个环节出现了问题。所以,我们需要本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。来再梳理一下,在nginx+apache【未经授权禁止转载】原创内容,盗版必究。这个环境中数据包的处理逻辑:

著作权归作者所有,禁止商业用途转载。【关注微信公众号:wwwtangshuangnet】【本文首发于唐霜的博客】【原创内容,转载请注明出处】【转载请注明来源】

nginx-httpd-502.fw

【转载请注明来源】原创内容,盗版必究。【关注微信公众号:wwwtangshuangnet】

如上图,当请求到达nginx时,ngin著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。x将请求转发给apache进行处理,当a【作者:唐霜】【版权所有】唐霜 www.tangshuang.netpache将结果返回给nginx时,ng【关注微信公众号:wwwtangshuangnet】【版权所有,侵权必究】inx再将结果展示给访客。但是,如果ng著作权归作者所有,禁止商业用途转载。【作者:唐霜】inx转发请求之后,迟迟没有收到apac【版权所有】唐霜 www.tangshuang.net【转载请注明来源】he的结果,或者apache返回的结果和【未经授权禁止转载】未经授权,禁止复制转载。nginx预期的结果不对等,就会返回50【原创不易,请尊重版权】【转载请注明来源】2错误。

本文版权归作者所有,未经授权不得转载。【原创内容,转载请注明出处】【原创内容,转载请注明出处】

那么这里面就包含了两个因素:【转载请注明来源】

【未经授权禁止转载】本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。
  • 1)时间【本文首发于唐霜的博客】
  • 【关注微信公众号:wwwtangshuangnet】【未经授权禁止转载】本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。
  • 2)数据未经授权,禁止复制转载。
  • 转载请注明出处:www.tangshuang.net【关注微信公众号:wwwtangshuangnet】【原创不易,请尊重版权】

当处理时间超出预期时,可能产生502错误本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。。当nginx得到的数据不符合预期时,也未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。可能产生502错误。那么时间问题是怎么产【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。生的呢?数据问题又是怎么产生的呢?

【关注微信公众号:wwwtangshuangnet】【访问 www.tangshuang.net 获取更多精彩内容】【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。【转载请注明来源】

服务器性能造成的502问题【版权所有,侵权必究】

【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】【未经授权禁止转载】

服务器的性能、配置的参数等,导致在整个请【本文受版权保护】著作权归作者所有,禁止商业用途转载。求处理过程中,请求被阻塞,从而导致请求处【未经授权禁止转载】【作者:唐霜】理时间过长,从而引起服务器假死等问题,其本文版权归作者所有,未经授权不得转载。【原创内容,转载请注明出处】结果之一,就是nginx返回502错误。

【原创内容,转载请注明出处】【未经授权禁止转载】【作者:唐霜】

机子硬件配置太低【转载请注明来源】

【本文受版权保护】【未经授权禁止转载】【未经授权禁止转载】【未经授权禁止转载】

服务器机器的配置确实太差的时候,环境跑起【版权所有,侵权必究】【转载请注明来源】来其实是有点吃力的。服务器的硬件配置影响著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】性能的,主要包括:内存、cpu、宽带、硬【本文受版权保护】【转载请注明来源】盘。

【访问 www.tangshuang.net 获取更多精彩内容】转载请注明出处:www.tangshuang.net【转载请注明来源】本文作者:唐霜,转载请注明出处。

这些其实不必过多的去解释,大家都懂的。但【本文受版权保护】本文作者:唐霜,转载请注明出处。是,这里面需要考虑的是,你的服务器到底配【版权所有】唐霜 www.tangshuang.net【转载请注明来源】置多大的内存,多高的宽带,cpu多少核才本文版权归作者所有,未经授权不得转载。【原创内容,转载请注明出处】好呢?你要这样去思考:

【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。【作者:唐霜】【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。

首先是cpu,它决定了程序运算的速度,并本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net不是核数越多越好,因为一段程序的运行计算【版权所有】唐霜 www.tangshuang.net【转载请注明来源】只需要那么多资源,多出来的cpu其实是浪未经授权,禁止复制转载。【作者:唐霜】费的。同一时间的访客数量运行不同的程序,【原创不易,请尊重版权】【本文受版权保护】就会使cpu占用率上升,你最好通过长期监【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。控cpu的占用率,来了解你的当前cpu是【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。否能够支持当前平均访客数量的运算需要,一【原创内容,转载请注明出处】本文版权归作者所有,未经授权不得转载。旦超出某个值,就应该考虑加核。

本文作者:唐霜,转载请注明出处。原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net

内存也是同样的道理,内存是程序在执行过程本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net中消耗掉的,当你的访客数上升的时候,内存转载请注明出处:www.tangshuang.net原创内容,盗版必究。就会被开销,你也应该长期去监控内存的占用本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】情况,看到每天的峰值达到一个高度的时候,本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。就考虑加内存。

【版权所有】唐霜 www.tangshuang.net【转载请注明来源】转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net

cpu和内存、宽带都要用这种思维去考虑是【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net否机子升级。当你升级到满足最高峰值的时候本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】,502自然就不会出现了。

【原创不易,请尊重版权】【转载请注明来源】【关注微信公众号:wwwtangshuangnet】【访问 www.tangshuang.net 获取更多精彩内容】【本文首发于唐霜的博客】

性能相关的服务器配置参数待优化本文版权归作者所有,未经授权不得转载。

转载请注明出处:www.tangshuang.net【关注微信公众号:wwwtangshuangnet】【原创不易,请尊重版权】

当你满足上面的硬件配置之后,就应该考虑一【作者:唐霜】本文版权归作者所有,未经授权不得转载。下服务器各个参数的优化。这里指的参数,是本文作者:唐霜,转载请注明出处。【原创内容,转载请注明出处】指上述nginx apache php 转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.netmysql redis等他们在内存、IO【访问 www.tangshuang.net 获取更多精彩内容】【版权所有】唐霜 www.tangshuang.net上面的使用安排。

【本文受版权保护】本文作者:唐霜,转载请注明出处。【未经授权禁止转载】

举一个例子,如果一台服务器内存为512M【未经授权禁止转载】原创内容,盗版必究。,系统占用了120M左右,其他一些服务占【本文受版权保护】未经授权,禁止复制转载。用了50M左右,现在有300M左右的内存【原创不易,请尊重版权】【访问 www.tangshuang.net 获取更多精彩内容】留下来给napmr环境去运行。其中,re【访问 www.tangshuang.net 获取更多精彩内容】著作权归作者所有,禁止商业用途转载。dis的数据常驻内存,因此最好不要在这台【转载请注明来源】本文作者:唐霜,转载请注明出处。服务器上使用。每一个访客访问某个网页的时著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】候,nginx可能会用10M,apach著作权归作者所有,禁止商业用途转载。【原创内容,转载请注明出处】e用20M,php则根据该网页后台程序的【作者:唐霜】本文版权归作者所有,未经授权不得转载。逻辑,有可能用到8-32M,而如果这个页著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net面需要连接Mysql进行数据库查询,My未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。sql又会根据连接和查询数不同,消耗掉可【转载请注明来源】【作者:唐霜】能16-64M的内存,这样算下来,同一时【转载请注明来源】【版权所有】唐霜 www.tangshuang.net刻,单个访客可能就会消耗60-120M的【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。内存,而你剩下的300M内存,最多也就能【关注微信公众号:wwwtangshuangnet】原创内容,盗版必究。撑死5个访客,超过5个人的第6个人,就需未经授权,禁止复制转载。【本文首发于唐霜的博客】要等待,直到前面的处理已经结束,内存被释【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。放出来。(当然,这里仅仅是一个假设的例子【原创不易,请尊重版权】【转载请注明来源】

【转载请注明来源】【转载请注明来源】原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net

而在nginx、apache、php的配【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。置文件中,可以对这些消耗进行有限的配置。【本文受版权保护】【本文受版权保护】比如可以配置最大消耗内存,比如php最多【关注微信公众号:wwwtangshuangnet】【原创不易,请尊重版权】允许消耗32M内存,当访客访问的页面ph本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.netp消耗的内存到达这个值的时候,就会在页面【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。中返回错误结果,甚至直接白屏。这样,就可【原创内容,转载请注明出处】【原创内容,转载请注明出处】以为其他用户省下内存,第6个人进来时,内【转载请注明来源】本文作者:唐霜,转载请注明出处。存还有,就可以直接打开页面,而无需等待内【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。存释放。

【转载请注明来源】著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。【本文受版权保护】

除了内存的控制,服务器的配置参数中还有很本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。多,可以有效对服务器资源进行分配。具体的本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】这些配置,需要你去搜索nginx、apa本文版权归作者所有,未经授权不得转载。【作者:唐霜】che、php相关的配置教程。

【原创内容,转载请注明出处】【版权所有,侵权必究】【版权所有,侵权必究】

请求阻塞造成的502问题【作者:唐霜】

【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】

在我们看到502的时候,所能了解到的,仅【访问 www.tangshuang.net 获取更多精彩内容】本文版权归作者所有,未经授权不得转载。仅是nginx无法为你提供服务,返回的错【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.net误,而不知道后面具体是哪一个位置出了问题【转载请注明来源】【作者:唐霜】。网上大部分材料都说是php-fpm的配【未经授权禁止转载】【作者:唐霜】置问题,但实际上,问题可能会出现在php原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】-fpm的后面环节。

【原创内容,转载请注明出处】原创内容,盗版必究。【本文受版权保护】本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。

我们来看一个情况:【版权所有】唐霜 www.tangshuang.net

【版权所有,侵权必究】【转载请注明来源】【访问 www.tangshuang.net 获取更多精彩内容】原创内容,盗版必究。原创内容,盗版必究。

nginx-httpd-502-2.fw

【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net

上图中表示了一种情况,当php程序(运行【原创不易,请尊重版权】【本文受版权保护】时,而不是指代码执行)运行过程中,服务器【未经授权禁止转载】【关注微信公众号:wwwtangshuangnet】突然内存占尽导致php进程崩溃,这个时候未经授权,禁止复制转载。【原创不易,请尊重版权】,php不会返回apache任何数据,而【版权所有,侵权必究】【原创内容,转载请注明出处】是apache监听到程序执行异常,这种异【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.net常让apache决定返回一个异常,而ng【原创不易,请尊重版权】未经授权,禁止复制转载。inx在得到这个异常时,由于与预期得到的著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。结果不同,所以返回了502.在这种情况中未经授权,禁止复制转载。【未经授权禁止转载】,问题并不是出现在apache这个环节,转载请注明出处:www.tangshuang.net【作者:唐霜】而是php这个环节。类似的,如果请求依赖本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.net于其他应用程序,这些应用程序突然崩溃的时【关注微信公众号:wwwtangshuangnet】【本文受版权保护】候,也有可能返回502.

原创内容,盗版必究。【版权所有,侵权必究】【原创内容,转载请注明出处】【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。

因此,要解决这个问题实在比较难,需要对整著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net个运行机制做深入的监控,才能准确的把握问转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net题的根源,才能定位解决问题。

【未经授权禁止转载】【未经授权禁止转载】原创内容,盗版必究。【转载请注明来源】转载请注明出处:www.tangshuang.net

一般这种监控可以通过以下途径去做:【转载请注明来源】

【本文受版权保护】【关注微信公众号:wwwtangshuangnet】【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net【作者:唐霜】
  • 1)日志转载请注明出处:www.tangshuang.net
  • 【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。
  • 2)综合数据未经授权,禁止复制转载。
  • 转载请注明出处:www.tangshuang.net【本文首发于唐霜的博客】【本文首发于唐霜的博客】【转载请注明来源】
  • 3)逻辑分析未经授权,禁止复制转载。
  • 【原创不易,请尊重版权】【本文首发于唐霜的博客】【未经授权禁止转载】

日志是比较靠谱的,例如上面这个案例中,日【作者:唐霜】【作者:唐霜】志可以这么去找。nginx的访问日志中记【未经授权禁止转载】【本文受版权保护】录了这条访问,再从apache中找到同样未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。一条访问,再去分析php错误日志,找出最【版权所有】唐霜 www.tangshuang.net【作者:唐霜】后几条错误是否是这次访问产生的。这样顺藤【原创内容,转载请注明出处】【关注微信公众号:wwwtangshuangnet】摸瓜,就可以大致定位错误引起的原因,在通【本文受版权保护】【版权所有,侵权必究】过该原因具体分析引起这个错误的更深层次的【访问 www.tangshuang.net 获取更多精彩内容】原创内容,盗版必究。原因,最终找到症结。

【本文首发于唐霜的博客】【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】【本文受版权保护】

但是,为了提升性能,大多数服务器中没有保【原创不易,请尊重版权】未经授权,禁止复制转载。存日志,或者有些日志记录并不能帮助我们找【未经授权禁止转载】【版权所有】唐霜 www.tangshuang.net到根源。这个时候就要你拥有数据分析和逻辑【本文受版权保护】【关注微信公众号:wwwtangshuangnet】分析的能力,前提是你对这一整套的运行机制本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】比较了解。通过服务器提供商提供的一些数据未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net,服务器本身反馈的一些数据(如top f著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】ree等命令得到的数据),以及日志记录,原创内容,盗版必究。【原创内容,转载请注明出处】再按照请求运行的逻辑分析问题可能出现的位未经授权,禁止复制转载。【关注微信公众号:wwwtangshuangnet】置,并且每个地方进行排查,一点一点去验证原创内容,盗版必究。【版权所有,侵权必究】

【本文首发于唐霜的博客】【本文首发于唐霜的博客】【访问 www.tangshuang.net 获取更多精彩内容】

好了,本文主要是梳理了遇到502的解决思【访问 www.tangshuang.net 获取更多精彩内容】【版权所有】唐霜 www.tangshuang.net路,是提纲挈领式的提供思维方式。它不仅要【版权所有】唐霜 www.tangshuang.net本文作者:唐霜,转载请注明出处。求你能够完成服务器配置,而且要求你对服务【版权所有】唐霜 www.tangshuang.net本文作者:唐霜,转载请注明出处。器运行机制有更深入的了解,这或许是学习的【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。一种有效方式。

【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】【原创不易,请尊重版权】【本文首发于唐霜的博客】

2016-01-28 14220

为价值买单,打赏一杯咖啡

本文价值142.2RMB