My test may not be right, I was trying to simulate a larger number of concurrent HTTP conections. Could you review my test methodology and suggest a more meaningful NIO test?
jgenender wrote: > > 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? >> >> >> > > -- View this message in context: http://www.nabble.com/ASyncWeb-v-s-Tomcat-5.5.20-Performance-issues-tf4504220s16868.html#a12895391 Sent from the Apache MINA Support Forum mailing list archive at Nabble.com.