Guys,
I wanted to follow back around on some of the websocket load testing we've been
doing in EC2. The good news is, we were able to get 100K websockets
connected directly to a single Tomcat instance (EASILY) - once we got the
settings right. As a result, I wanted to post my results here for 2 reasons:
1) Hopefully this may benefit others
2) I'd like ask the Tomcat experts which of the changes we made is most
likely to have contributed to this working, or is it a combination?
My theory is it's a combination of: acceptorThreadCount + maxKeepAliveRequests.
Logically, it would make sense that running on with 16vCPU(s) should benefit
from more acceptor threads. In addition, reading the maxKeepAliveRequests, we
wondered if making this UNLIMITED would help when many concurrent websocket
requests come in because they are all HTTP requests initially that get upgraded.
So, if anyone can clarify whether our theory is correct; or, if not - what
settings below actually made the difference, that would be great! Without an
understanding of what Tomcat is doing under the hood, my theory is just that.
Thanks for all the support you guys provide on this list,
Bob
SUMMARY:
I posted earlier this week about having trouble just getting 10 - 20K
websockets connected to a single Tomcat instance running on a 16vCPU/60GB EC2
instance running JVM (G1GC, NUMA, 24G - 48G). The settings during those tests
were the following, and we were seeing websocket connects fail due to
TimeoutExceptions and EOFExceptions.
ORIGINAL SETTINGS
<Connector port="80"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
maxConnections="100000"
maxThreads="100000"
redirectPort="8443" />
After looking at the Tomcat Connector documentation closer, along with what
Glassfish recommends when deploying in production, we modified the settings to
the values shown below:
WORKING SETTINGS
<Connector port="80"
protocol="org.apache.coyote.http11.Http11NioProtocol"
acceptorThreadCount="8"
maxKeepAliveRequests="-1"
connectionTimeout="-1"
maxConnections="-1"
maxThreads="20000"
redirectPort="443" />
Bob DeRemer
Senior Director, Architecture and Development
[Description: Description: Description: Description:
cid:[email protected]]
http://www.thingworx.com<http://www.thingworx.com/>
Skype: bob.deremer.thingworx
O: 610.594.6200 x812
M: 717.881.3986