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:image001.png@01CBE3DE.51A12030]
http://www.thingworx.com<http://www.thingworx.com/>
Skype: bob.deremer.thingworx
O: 610.594.6200 x812
M: 717.881.3986

Reply via email to