【发布时间】:2020-08-08 08:31:11
【问题描述】:
我们正在开发一个项目,前端使用 Angular,后端使用 Spring。没什么新鲜的。但是我们已经将后端设置为使用 HTTP2,并且不时会发现奇怪的问题。
今天我开始玩 chrome 的“网络日志导出”,我在日志的 HTTP2_SESSION 行中发现了这条有趣的信息。
t=43659 [st=41415] HTTP2_SESSION_RECV_GOAWAY
--> active_streams = 4
--> debug_data = "Connection [263], Too much overhead so the connection will be closed"
--> error_code = "11 (ENHANCE_YOUR_CALM)"
--> last_accepted_stream_id = 77
--> unclaimed_streams = 0
t=43659 [st=41415] HTTP2_SESSION_CLOSE
--> description = "Connection closed"
--> net_error = -100 (ERR_CONNECTION_CLOSED)
t=43661 [st=41417] HTTP2_SESSION_POOL_REMOVE_SESSION
t=43661 [st=41417] -HTTP2_SESSION
看起来 ERR_CONNECTION_CLOSED 问题的根源在于服务器认为来自同一客户端的开销过多并关闭了连接。
问题是 ¿ 我们可以调整服务器以接受达到一定限制的开销吗?如何?我相信这是我们应该能够在 Spring 或 tomcat 或那里的某个地方进行调整的东西。
干杯 伊格纳西奥
【问题讨论】:
-
我认为 Tomcat http2 实现中存在错误,这就是问题的根源。看到这条评论:github.com/apache/tomcat/commit/…
-
你有没有设法解决这个/正确配置这个?我遇到了类似的问题。发表在 github 线程中。
标签: spring-boot google-chrome tomcat http2 overhead