500 - nginx如何减少5xx错误
为情所困
为情所困 2017-05-16 17:20:56
0
2
723

nginx前端,后端是n个docker容器,docker容器是nginx+php-fpm,已知每个容器都有可能故障,容器故障时前端会有502或者504错误,前端偶尔也会有网络延迟

目前的做法和问题

nginx前端使用tengine,并开启健康检查

  1. 假设interval设置为3s,fall为2,那么如果后端在上一次检查结束后立即挂掉,即有近6s的时间请求依然会转发到故障后端

  2. 假设timeout设置为1s,那么如果前端网络延迟,会导致瞬时全部后端都超时,直接返回502给用户。但是如果在增大timeout值,那么健康检查将没有多大意义,正常的时候后端一般50ms以内会响应,1s已经不能过滤掉高负载后端

后端docker使用tengine,开启sysguard模块

  1. 同上,在interval间隔内挂掉,仍有部分请求到达后端,如果后端负载在阈值频繁波动,那么5xx错误可能会比没有健康检查和sysguard还多

请问有什么解决办法吗?

为情所困
为情所困

全部回复(2)
漂亮男人

不知道你的前端应用场景是怎么样的,貌似负载很高的样子,不太可能直接暴露错误给用户吧,大不了提示用户稍后再试下,这深入研究还是得看看什么技术架构,从根上找问题

曾经蜡笔没有小新

个人感觉这东西是避免不了的 负载大了就优化程序或者增大集群 该出的错误还是要出 只不过写个含糊的名字就可以了
淘宝也经常系统忙 知乎没事还自己给自己服务器提问呢

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板