nginx如何减少5xx错误
nginx前端,后端是n个docker容器,docker容器是nginx+php-fpm,已知每个容器都有可能故障,容器故障时前端会有502或者504错误,前端偶尔也会有网络延迟
目前的做法和问题
nginx前端使用tengine,并开启健康检查
假设interval设置为3s,fall为2,那么如果后端在上一次检查结束后立即挂掉,即有近6s的时间请求依然会转发到故障后端
假设timeout设置为1s,那么如果前端网络延迟,会导致瞬时全部后端都超时,直接返回502给用户。但是如果在增大timeout值,那么健康检查将没有多大意义,正常的时候后端一般50ms以内会响应,1s已经不能过滤掉高负载后端
后端docker使用tengine,开启sysguard模块
同上,在interval间隔内挂掉,仍有部分请求到达后端,如果后端负载在阈值频繁波动,那么5xx错误可能会比没有健康检查和sysguard还多
请问有什么解决办法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不知道你的前端应用场景是怎么样的,貌似负载很高的样子,不太可能直接暴露错误给用户吧,大不了提示用户稍后再试下,这深入研究还是得看看什么技术架构,从根上找问题
个人感觉这东西是避免不了的 负载大了就优化程序或者增大集群 该出的错误还是要出 只不过写个含糊的名字就可以了
淘宝也经常系统忙 知乎没事还自己给自己服务器提问呢