首页 > 其他分享 >proxy_next_stream 的学习

proxy_next_stream 的学习

时间:2024-04-02 15:44:19浏览次数:16  
标签:http stream next 响应 服务器返回 500 proxy

proxy_next_stream 的学习


背景

一个项目出现了程序异常的情况. 
具体表现为, 总是会前端爆出. opcache 不存在的问题. 

很奇怪的是业务开发说这个错误是不应该出现的
并且只有在负载的情况下才有问题. 

公司里面负载的环境很多.  但是从来没出现过类似的问题. 
我这边拿过现场的nginx配置文件进行过处理没有问题. 

但是突然公司同事发现有nginx 日志出现 错误日志 两次
到upstream的情况. 
所以想多学习与了解一下

问题的发现

问题其实出现了很久的时间.
因为自己使用nginx其实不是很深入.
没有发现雪冰老师发现的 proxy_next_stream 的参数设置

当然因为是移动运营商给提供的nginx, 我这边并不是很清楚
到底是使用的next_stream 还是其他的lua脚本来实现的. 

只能找具体的云服务提供商来进行相关的处理. 

参数说明:

proxy_next_upstream error | timeout | invalid_header | http_500 
| http_502 | http_503 | http_504 | http_403 
| http_404 | http_429 | non_idempotent | off ...;

Default:    proxy_next_upstream error timeout;
Context:    http, server, location

指定应将请求传递到下一个服务器的情况:
error             # 与服务器建立连接,向其传递请求或读取响应头时发生错误;
timeout           # 在与服务器建立连接,向其传递请求或读取响应头时发生超时;
invalid_header    # 服务器返回空的或无效的响应;
http_500          # 服务器返回代码为500的响应;
http_502          # 服务器返回代码为502的响应;
http_503          # 服务器返回代码为503的响应;
http_504          # 服务器返回代码504的响应;
http_403          # 服务器返回代码为403的响应;
http_404          # 服务器返回代码为404的响应;
http_429          # 服务器返回代码为429的响应(1.11.13);
non_idempotent    # 通常,请求与 非幂等 方法(POST,LOCK,PATCH)
                    不传递到请求是否已被发送到上游服务器(1.9.13)的下一个服务器; 
                    启用此选项显式允许重试此类请求;
off               # 禁用将请求传递给下一个服务器。

关于思路

cat nginx.conf |grep "02/Apr/2024:09:04" >1.txt
cat 1.txt |grep "" 500" 查看500 情况的日志. 

发现有5个get 1个put 进行了 多个后端地址的处理. 

PUT  HTTP/1.1" 500 242 -"10.xx.xxx.5:5200, 10.xx.xxx.2:5200"

因为 PUT是非幂等的 会导致两个异常提示信息不一致. 

关于解决问题的思路

1. 必须找云服务提供商进行解决. 

2. 不明确增加 
proxy_next_upstream off ;
能否带来收益. 
应该可以进行一下相关的测试工作. 

标签:http,stream,next,响应,服务器返回,500,proxy
From: https://www.cnblogs.com/jinanxiaolaohu/p/18110718

相关文章

  • [转帖]nginx重试机制proxy_next_upstream
    https://www.cnblogs.com/cyleon/p/11023229.html nginx作为反向代理服务器,后端RS有多台服务器,上层通过一定机制保证容错和负载均衡。nginx的重试机制就是容错的一种官方链接:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstreamproxy_next_......
  • Java 8 新特性:Lambda 表达式、方法引用和 Stream 流
    函数式接口具有单个抽象方法的接口被称为“函数式接口”,函数式接口的实例被称为“函数对象”,表示函数和要采取的动作。六大基础函数式接口:函数式接口名称用途方法Consumer<T>消费型接口操作类型T的对象voidaccept(Tt)Supplier<T>供给型接口返回类型为T......
  • 【前端面试3+1】07vue2和vue3的区别、vue3响应原理及为什么使用proxy、vue的生命周期
    一、vue2和vue3的区别1.性能优化:        Vue3在性能方面有很大的提升,主要是通过虚拟DOM的优化和响应式系统的改进实现的。虚拟DOM重构:Vue3中对虚拟DOM进行了重构,使得更新算法更加高效,减少了更新时的开销,提升了性能。静态树提升:Vue3可以通过静态树提升技术......
  • proxy与defineproperty
    proxy与defineproperty区别1.defineproperty是属性劫持,而proxy针对是对象代理2.defineproperty需要循环遍历对象,消化性能,而proxy不用3.defineproperty可以监听数组属性变化,但是性能代价太大,vue2放弃;defineproperty无法判断对象的新增删除,proxy都可以监听得到 4.proxy会返......
  • Java常用新特性之Stream API
    一,认识Stream1.StreamAPIvs集合框架StreamAPI之于集合就类似于SQL之于数据表。集合:存储数据,基于内存的。StreamAPI:处理数据,基于CPU的3.使用说明①Stream自己不会存储元素。②Stream不会改变源对象。相反,他们会返回一个持有结果的新Stream。③Stream......
  • Java(2) ----- 异常、多线程、同步安全、死锁、并发包、Lambda表达式、Stream流
    异常方法默认都可以自动抛出运行时异常!自定义异常:(1)自定义编译时异常1、定义一个异常类继承Exception2、重写构造器3、在出现异常的地方用thrownew自定义对象抛出4、编译时异常是编译阶段就报错,提醒跟家强烈,一定需要处理!(2)自定义运行时异常1、定义一个异常类继承RunTimeE......
  • 服务器端渲染Nuxt.js Next.js
    传统服务端渲染art-template包是一个模板解析器,其官网会有解析器的语法和使用constexpress=require('express')constfs=require('fs')consttemplate=require('art-template')constapp=express()app.get('/',(req,res)=>{//1.获取页面模......
  • KingbaseES V8R6集群运维案例之---级联备库upstream节点故障
    KingbaseESV8R6集群运维案例之---级联备库upstream节点故障案例说明:在KingbaseESV8R6集群,构建级联备库后,在其upstream的节点故障后,级联备库如何处理?适用版本:KingbaseESV8R6集群架构:案例一:一、配置集群的recovery参数(allnodes)Tips:关闭备库的aut-recovery机制......
  • CentOS7 下 Docker方式部署 nextcloud步骤
    本示范站点在操作系统Centos7环境下;根目录设在:/app/dapp/caihcloud/nextcloud/html,根据实际情况自行调整;假设你已经安装启动好mysql80。现在开始,步骤如下:1、执行安装命令yuminstalldocker-ysystemctlstartdocker//启动dockersystemctlenabledocker//设置开机启动......
  • kube-proxy模式 iptables和ipvs对比
    kube-proxy的ipvs模式和iptables模式在Kubernetes集群中各有优劣,主要体现在性能、功能和支持的协议方面。1.性能:IPVS模式:由于IPVS是专门为负载均衡设计的,它在性能方面通常优于iptables。IPVS使用基于哈希的负载均衡算法,能够快速处理大量的并发连接,其连接处理的名义计算复杂度......