tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bob DeRemer <bob.dere...@thingworx.com>
Subject attempting to achieve 100K concurrent websocket connections on Tomcat 7.0.48 NIO
Date Fri, 01 Nov 2013 22:00:01 GMT
QUESTION:
I'm looking for some advice on what Tomcat NIO connector settings to use to support 100K concurrent
websocket connections.  Hopefully I  can reach this goal through a combination of Tomcat NIO
Connector settings, and Server 2008 R2 configuration [if needed].

BACKGROUND:
We're scale testing our websocket application and looking to see how many concurrent websocket
connections we can get on a single Tomcat instance - with the goal being 100K.  I've provided
the test landscape details at the bottom - all VERY BIG EC2 instances over 10 GB network,
so memory, CPU and network do not appear to be the problem when monitoring.

PROBLEM:
The problem we are running into is that we can't seem to establish even 50K connections into
Tomcat.  At some point, we start getting connect failures, similar to the following:

Couldn't connect java.io.EOFException: null
                at org.apache.tomcat.websocket.WsWebSocketContainer.processResponse(WsWebSocketContainer.java:570)
~[tomcat7-websocket.jar:7.0.48-dev]
                at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:317)
~[tomcat7-websocket.jar:7.0.48-dev]
Wrapped by: javax.websocket.DeploymentException: The HTTP request to initiate the WebSocket
connection failed
                at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:344)
~[tomcat7-websocket.jar:7.0.48-dev]

I'm hoping that someone may be able to advise what changes we might make to the following
Tomcat NIO connector setting that will allow upwards of 100K websocket connections:

<Connector port="80"
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           connectionTimeout="20000"
           maxConnections="100000"
           maxThreads="100000"
           redirectPort="8443" />


TEST LANDSCAPE:

The test landscape is all Windows Server 2008 R2 boxes running in EC2 and the
Test Client environment:

Our test client is a multi-threaded java client that makes use of the JSR356 ClientEndpoint
functionality.  We're creating 40K+ websocket connections from a single test client machine.
 The test client is Server 2008 R2 and we have configured it to allow 50K ephemeral ports,
so we should be able to establish 40K+ outbound websocket connections.

Server environment:

*         EC2 instance (cc2.8xlarge) (60 GB, 10 GB network, 16 vCPUs)

*         Server 2008 R2

*         Tomcat 7.0.48 (trunk)

*         Java 1.7.0_45


Thanks,
Bob

http://www.thingworx.com<http://www.thingworx.com/>
Skype: bob.deremer.thingworx
O: 610.594.6200 x812
M: 717.881.3986


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message