A few considerations for you... Be sure to tweak your TCP IP parameters or you will hit a wall very quickly with AsyncWeb. You need to significantly up your socket queue lengths and significantly decrease your TCP time wait. Otherwise you will fill your IP queue and your server will probably appear to hang for a while waiting for the TIME_WAIT and SYN_RECV to clear. There are probably several changes you need to tweak your IP stack. Google on tuning IP parameters for your OS and you should find lots of articles on how to.
Also be sure you have a large enough acceptCount size to be sure it will handle the load, or you will get rejected connections. I would tweak the acceptCount to equal your maximum concurrent connections. Also...something else to keep in mind...AsyncWeb is really going to shine in concurrent connections, not necessarily transactions per second. This means it could handle a lot more load than a single threaded connector on Tomcat could. Thus speed is not necessarily a good way to measure scalability. Jeff Deepak J wrote: > Perhaps not the right forum to post these results. But just wanted your > opinion on the tests. > > S/W versions: > Tomcat 5.5.20 > ASyncWeb 0.8.2 > JRE 1.5.0._06 > > Test Methodology: > A multi thread client constructs HTTP/POST messages (headers + content). The > size of each message is ~160KB. The client can be pointed either at Tomcat > or at ASyncWeb server. The number of client threads and iterations per > thread is configurable. Thus a config of thread=10 & iterations=1000 will > result in 10000 HTTP/POST. Keep-Alive functionality is not being tested > hence after each HTTP connection there is a call to disconnect(). A static > counter is incremented after a 200 OK. After all client threads complete > execution a result is printed indicating total time taken for the test, > number of 200 OK received & total connections/sec > The server code, which resides in the Tomcat Servlet and ASyncWeb > stand-alone app is identical in functionality in both places. When a request > is received the Content-Length header is fetched. Data from the InputStream > is read in a while loop and writtern in byte chunks of size 1024 to a byte > array output stream. Once the stream has been read, the size of the byte > array is compared with the content-length and a log is printed if they don't > match. On successful completion a 200 OK is returned. > > Test Results: > ---------------------------------------------------------------------------------------------------------------- > No Threads Iterations Tomcat 5.5.20 > > ASyncWeb 0.8.2 > ----------------------------------------------------------------------------------------------------------------- > 1 10 1000 Test duration = 138626 millis > > Test duration = 901996 millis > Total Connections = 9995 > > Total Connections = 10000 > Connections/Sec = 72 > > Connections/Sec = 11 > > > 2 100 2 Test duration = 2878 millis > > Test duration = 20892 millis > Total Connections = 200 > > Total Connections = 200 > Connections/Sec = 69 > > Connections/Sec = 9 > > 3 500 10 Test duration = 41796 millis > > OutOfMemory in Server > Total Connections = 5000 > Connections/Sec = 119 > ----------------------------------------------------------------------------------------------------------------------------- > > Now I am wondering if there are tweeks needed to get better number. Should > AsyncWeb not perform better that Tomcat's One-Thread-Per-Connection model? > > >