Search code examples
javaapachetomcathttp2tomcat9

Apache Tomcat-9.0.16 Setting property 'maxConcurrentStreamExecution' to '100' did not find a matching property


I have a tomcat configuration which supports http2 and as per 9.0.16 documentation, If not specified, the default value of 20 will be used.

So, I just want to increase the maxConcurrentStreamExecution and maxConcurrentStream to 100 or 200, so I configure as per the documentation mentioned above

My connector configuration is as follows,

<Connector port="9191" 
           URIEncoding="UTF-8"
           sslImplementationName="org.apache.tomcat.util.net.openssl.OpenSSLImplementation"
           protocol="org.apache.coyote.http11.Http11Nio2Protocol"
           maxThreads="50000"
           SSLEnabled="true"
           compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml" 
           compression="on"
           minSpareThreads="25" 
           noCompressionUserAgents="gozilla, traviata"
           scheme="https"
           secure="true"
           keystoreFile="conf/keystoreFile.keystore"
           keystorePass="password">
    <UpgradeProtocol compression="on"
                     maxConcurrentStreamExecution="100"
                     maxConcurrentStreams="100"
                     className="org.apache.coyote.http2.Http2Protocol">
    </UpgradeProtocol>
</Connector>

but, when checking the tomcat logs, I can see a warning

NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED

27-Feb-2019 19:16:34.595 WARNING [main] org.apache.catalina.startup.SetAllPropertiesRule.begin [SetAllPropertiesRule]{Server/Service/Connector} Setting property 'maxConcurrentStreamExecution' to '100' did not find a matching property.

27-Feb-2019 19:16:34.603 WARNING [main] org.apache.catalina.startup.SetAllPropertiesRule.begin [SetAllPropertiesRule]{Server/Service/Connector} Setting property 'maxConcurrentStreams' to '100' did not find a matching property.

27-Feb-2019 19:16:34.679 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/9.0.16

27-Feb-2019 19:16:34.679 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Feb 4 2019 16:30:29 UTC

27-Feb-2019 19:16:34.680 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.16.0

27-Feb-2019 19:16:34.680 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux

27-Feb-2019 19:16:34.680 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 4.4.0-141-generic

27-Feb-2019 19:16:34.681 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64

As you can see tomcat is throwing not find a matching property warning,

But this configuration is necessary for me to increase the throughput of my server which is going to handle http2 multiplexed post requests in large quantity

Tomcat : 9.0.16, JDK: OpneJDK_10.0.1, OS: Ubunut/Centos

Kindly let me know where I m wrong and how to configure it properly to make use of the attributes correctly

TIA


Solution

  • Testing it using a newly downloaded Apache Tomcat 9.0.16 and the Connector element you provided worked without error or warning for me. Adding an intentional typo to the UpgradeProtocol element attribute like <UpgradeProtocol maxConcurrentStreamExecutionTest="100".../> results in following warning:

    WARNING: Match [Server/Service/Connector/UpgradeProtocol] failed to set property [maxConcurrentStreamExecutionTest] to [100]

    Comparing this to your warning log message:

    27-Feb-2019 19:16:34.595 WARNING [main] org.apache.catalina.startup.SetAllPropertiesRule.begin [SetAllPropertiesRule]{Server/Service/Connector} Setting property 'maxConcurrentStreamExecution' to '100' did not find a matching property.

    indicates that you wrongly added those properties to a <Connector/> element instead of an <UpgradeProtocol/> element. This would also mean the Connector element provided in your question is not the (only) one configured for your server.