Hello Experts
Several of my production servers were recently upgraded from Tomcat 9.0.14 to
9.0.24; immediately after the upgrade the servers started accumulating memory
in a steady trend that was not observed before. In addition, CPU utilization
that used to hover around 2% not sits at 8%.
For now the servers are still serving but I suspect they'll become unresponsive
in a few hours.
I loaded a heap dump from one of the servers into MAT and received the
following Leak Suspect:
One instance of "org.apache.coyote.http11.Http11NioProtocol" loaded by
"java.net.URLClassLoader @ 0x503f02c40" occupies 9,282,972,608 (96.88%) bytes.
The memory is accumulated in one instance of
"java.util.concurrent.ConcurrentHashMap$Node[]" loaded by "<system class
loader>".
The HashMap referenced in the report appears to be "waitingProcessors" inside
AbstractProtocol which contain 262K entries.
The same issue was reproduced using v9.0.26 as well
Please let me know whether I should provide additional information
Current setup of the production servers:
AdoptOpenJDK (build 11.0.3+7)
Amazon Linux 2
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxHttpHeaderSize="16384"
maxThreads="500" minSpareThreads="25"
enableLookups="false" disableUploadTimeout="true"
connectionTimeout="10000"
compression="on"
SSLEnabled="true" scheme="https" secure="true">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol"
keepAliveTimeout="20000"
overheadDataThreadhold="0"/>
<SSLHostConfig protocols="+TLSv1.2+TLSv1.3">
<Certificate certificateKeystoreFile="tomcat.keystore"
certificateKeyAlias="tomcat"
certificateKeystorePassword=""
certificateKeystoreType="PKCS12"/>
</SSLHostConfig>
</Connector>
Thanks
Chen
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]