ERR_HTTP2_PROTOCOL_ERROR报错处理记录

2,661 阅读1分钟

起因

某项目近期nginx配置升级了http2配置,最初用的好好的。某日突然反馈大量图片不显示,并且我们的测试机均不复现,遂排查之、

问题说明

远程了复现问题的电脑,发现了大量的ERR_HTTP2_PROTOCOL_ERROR报错。搜索了一波,这个问题可太抽象了,产生原因也是千奇百怪,感觉是一大类问题的统称。

网上得到的各种解决方案

没办法只能自己排查,先看看chrome的网络事件:

image.png

感觉没什么有效信息,但是注意基本上所有产生改报错的请求都是大概10s左右,并且报错信息是server reset stream。感觉就像前端请求timeout,浏览器主动cancel一样。

那是不是服务端有相关配置呢?看了看nginx配置:

image.png

发现了nginx把请求返回事件配置成10s了,这样玩是吧。。 将之改到合理范围,问题解决。

思考

为啥在开启http2之前,配了这个10s的超时时间没有这个问题呢?

原因应该是http2开启了分帧传输,页面初始化时,资源并发较大,大量资源都在占用带宽,所以一起超过了10s。而http1.1虽然有tcp链接限制,但是一个tcp下载一个资源,所以返回能确保资源在10s内下载完毕。