0
votes

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

1
It seemes like you added the attributes to the connector instead of the upgradeProtocol element. Are you sure the server.xml snipped presented in your question is the one the server loads? It works for me with your code. (using jdk 11)Selaron
If I add an intentional typo I get the message: WARNING: Match [Server/Service/Connector/UpgradeProtocol] failed to set property [maxConcurrentStreamExecutionTest] to [100]Selaron
Ya, I think I have added in both connector and upgradeHandler, will remove and verify once...Zyber

1 Answers

1
votes

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.