Я действительно в тупике. В журналах моего сервера я вижу:
org.apache.coyote.CloseNowException: Connection [215], Stream [95], This stream is not writable
at org.apache.coyote.http2.Http2UpgradeHandler.reserveWindowSize(Http2UpgradeHandler.java:843) ~[tomcat-coyote.jar:9.0.30]
at org.apache.coyote.http2.Stream$StreamOutputBuffer.flush(Stream.java:940) ~[tomcat-coyote.jar:9.0.30]
at org.apache.coyote.http2.Stream$StreamOutputBuffer.doWrite(Stream.java:859) ~[tomcat-coyote.jar:9.0.30]
at org.apache.coyote.http2.Http2OutputBuffer.doWrite(Http2OutputBuffer.java:59) ~[tomcat-coyote.jar:9.0.30]
at org.apache.coyote.Response.doWrite(Response.java:601) ~[tomcat-coyote.jar:9.0.30]
Кажется, что это происходит, когда пользователь нажимает слишком быстро, но это не имеет смысла, так как Tomcat должен быть в состоянии обслуживать множество запросов. Это на сервере с очень небольшой нагрузкой, возможно, 2 или 3 HTTP-запроса в секунду, на очень быстрой машине.
Это с Spring Boot 2 и Tomcat 9.0.30. Это действительно сбивает с толку.
Я видел похожий вопрос о SO, где кто-то получил это с помощью веб-пу sh, но это не так.
Вот как выглядит наш коннектор HTTP / 2 настроено:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true"
keystoreFile="/etc/ssl/keys.p12"
keystorePass="changeit"
keyAlias="tomcat"
sslProtocol="TLS"
sslEnabledProtocols="TLSv1.3,TLSv1.2"
connectionTimeout="20000"
>
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol"
keepAliveTimeout="20000"
/>
</Connector>
Он работает на JDK 13.0.2 на сервере Ubuntu 18.04.
Есть идеи по этому поводу? Это определенно то, что пользователи замечают, и я понятия не имею, как это решить.