![99921d0561a5fe312bb5b91d761d46d3.png](https://i-blog.csdnimg.cn/blog_migrate/d8b2674a2172044f916b66cdcb00e3d5.jpeg)
背景
我负责的鹰眼监控服务上线,部署完成,页面不能打开,通过接口观察发现,sse的连接不能拿到持续的推送响应数据,偶发能拿到部分数据
分析
1.能够正常请求,拿到http的响应数据(部分/不全),证明dns解析及nginx转发正常
2.手动调用服务服务(线上)接口,正常推送响应数据,证明服务本身没问题
3.测试及开发环境调用接口,正常推送响应数据,证明nginx的配置没问题(使用完全相同的配置)
4.查看服务器日志,全部是[Caused by: java.io.IOException: Connection reset by peer]错误,说明是远端关闭了连接
5.综合以上考虑,还是nginx转发或者前端的ha主动断掉了连接,但与运维确认后发现,测试环境ha和nginx配置也一模一样
陷入僵局,接下来,如何分析呢。死马当活马医,手动curl一下,分析请求,拿到如下一些数据
![833917cfb403d4dcdc675a47caed8781.png](https://i-blog.csdnimg.cn/blog_migrate/d59c192226d171a14ee8bf90c5d0077d.jpeg)
![97837d87c7c5434bf3ede30cef295f4d.png](https://i-blog.csdnimg.cn/blog_migrate/d25c7e9c936d683a0ec29b699ddd8976.jpeg)
在对比一下测试环境和开发环境,好像没有HTTP2(h2),与运维确认,测试环境没有配置h2的插件,线上配置过。再多个可用和不可用的人员同时请求几个服务发现,确实请求的是h2的均不能使用,能够使用的均走的是HTTP/1.1 协议
跟踪
网上查询相关资料,完全没有任何可用信息,大多数只提到h2使用多路复用协议,可以使用Web-push功能,但如何在h2协议中配置sse,均没有找到资料。
疑问
1.为何部分人员请求相同地址拿到是不同的协议(均使用默认curl或者浏览器直接打开)
2.同时支持h2和http/1.1协议时,如何兼容配置