Hi all,
I'm trying to get benchmarks about performance of my vertx (2.1RC3) server based application.
Server-side: using vertx I'm publishing some RESTful services to be used by the client layer and in the same vertx instance there is also a verticle to manage websocket communication and exchange small json messages with client layer
Client-side: a web application which calls the RESTful services and also a web socket in order to receive messages from server (using SockJS).
The infrastructure is the following:
browser <------> NGINX -> VERTX -> REDIS
I developed a client application in order to have performance test benchmarks and my choise is to use a vertx instance in my client to test the server. Every communication is done in async way, so also the calls to restful services. Once subscribed the web socket I keep it alive so I can exchange an arbitraty number of messages. So I store httpclient and websocket for each connection in my client in a specific data structure.
My goal is to get a maximun number of connection which I can open to websocket communication layer, because I want to check this aspect of the application server side: I would like to know how many alive connection my server can handle.
Everything works fine except when I reach more than 6000/7000 connection (client side) when I start getting this exception:
apr 09, 2014 10:08:36 AM org.vertx.java.core.logging.impl.JULLogDelegate error
Grave: Unhandled exception
java.net.BindException: Address already in use: no further information
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:191)
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:279)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:461)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:378)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:350)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101)
at java.lang.Thread.run(Thread.java:744)
No exceptions server side.
It seems the OS (currently my client is running on Windows 7 64 bit) is not able to handle more TCP connections. I'm investigating on it, maybe on OS limits, but any help and idea is welcome.
Thanks
G.