tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bob DeRemer <bob.dere...@thingworx.com>
Subject RE: attempting to achieve 100K concurrent websocket connections on Tomcat 7.0.48 NIO
Date Fri, 01 Nov 2013 23:57:27 GMT


> -----Original Message-----
> From: Christopher Schultz [mailto:chris@christopherschultz.net]
> Sent: Friday, November 01, 2013 6:11 PM
> To: Tomcat Users List
> Subject: Re: attempting to achieve 100K concurrent websocket connections on
> Tomcat 7.0.48 NIO
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
> 
> Bob,
> 
> Just a quick note: with NIO, you should not need 100k threads to serve 100k
> connections. Can a single process even request 100k threads from the OS under
> your current environment?
> 

Hi Chris,

As for a single client requesting 100K, no.  There's a limit to the number of ephemeral ports
outbound, but 40 - 50K is definitely doable per machine.

We'll try setting maxThreads = -1 (like Mark mentioned), just to see how it works.  With regard
to machines, the client and server are both BIG EC2 instances with 16 vCPUs and 60 GB RAM.
   We were able to get 2 client machines, each running 1 java process simulating 40K websocket
clients, connected to 1 Tomcat server instance - so 80K concurrent connections.  It just seems
that if we hit it too hard all at once, there are problems and we can't quite determine what's
at the root of it.

Thx,
Bob

> - -chris
> 
> On 11/1/13, 6:00 PM, Bob DeRemer wrote:
> > 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(WsWe
> b
> > SocketContainer.java:570) ~[tomcat7-websocket.jar:7.0.48-dev] at
> >
> org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWe
> b
> > SocketContainer.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(WsWe
> b
> > SocketContainer.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
> >
> >
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.15 (Darwin)
> Comment: GPGTools - http://gpgtools.org
> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
> 
> iQIcBAEBCAAGBQJSdCb1AAoJEBzwKT+lPKRYZYEP/0kLnRF3f8BIw9KhIbf+uv1d
> Gr5MyMkx3HBpgEHw36hUfoiEEKE06mHfff3DRP9troCs6h8VovS/4jk1ti6NU1Kh
> FPVTF0FHiNC1kRtyvvw2avCJMSHYSnAUArDKkwO6wydTVsyTmGOPlL7u99Ad7Z
> MK
> kQV6adZNtBWqoMvDKJSCgtvHAva7UYZvL/jjC6mK1AcSj8MVD0xdGaH9BmS1pt
> 8u
> JJhAtEvPQsiWizKb2sNAegFB5MIx6Q2xPR5ZRTDm8CkGXndpTnqdg6I3SeXCjrA1
> dN8AuuhyFhsv3Ff06B5bWNggu4/utaG6h+dXQJDAE7/257YIaXQ0MM7QUm/Hkl
> dG
> ZRU7Nse5Y47WEXMMpVW0XpFhyCSqChaQSAJZ+caXm/VE3+beI9A5drX4fXuga1
> Ja
> euwpkm5PNvXTHdMchWP1iQLs7mVbrwsZ9mnMhXgPqUYY3OxHjl1lBWJ5i9Qd
> QLFj
> XZIC290HxbZeaR4RS10lu33aNPDbkQkjju14GeA+8CpKt2t9Vpu8ENkv6V/zhzTC
> oSJkwaoLpSY5dxofrBYnHcHqo43SLypTxg3cuI14+qvcBRwJ7zBPJ6FKepz3dR4M
> YsE6L3D/mJiFGl4cudAxhueeUrjPHFyYZ052L1tBGbiCVqDCmx6TpETcsqoWIbc3
> oZqI3b4iZFPuaWGnTf8z
> =kO9m
> -----END PGP SIGNATURE-----
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org

Mime
View raw message