Here are some numbers and a description for an informal load test of a J2EE web application I've developed. While it's far from rigorous, at least it will give some people some numbers to look at/compare. It would be interesting if other people could post performance numbers for web applications they have developed as well.
Gateway 930c Server, One 1.13 GHz Pentium III
Processor, 512 MB Memory,
Evaluation copy of Web Performance Trainer 2.4
limited to 25 users.
Linux 7.2 Professional
JBoss 3.0 with Jetty (Entire App running in 1 JVM)
JVM Sun 1.4.0.01
179 MB server memory usage at start of test
180 MB server memory usage at end of test
Seconds | Concurrent Users | Total Hits | Hits/Sec | KBytes/s | Errors
60 18 290 7 23 0
120 25 1131 16 97 0
180 25 2298 18 94 0
240 25 3054 11 91 0
250 25 3214 13 96 0
260 25 3394 18 103 0
270 25 3599 17 103 0
280 25 3787 16 98 0
290 25 3833 16 98 0
Note: Limited to only 25 users with an evaluation version of Web Performance Trainer. The server was not topped out at 25 users.
Estimated concurrent user cap by Web Performance Trainer at approximately 140 users.
I would estimate the concurrent user cap at about 60 to 100 users on this server with only 1 CPU.
The web application is an online community and the load test consisted of what a user would typically do while logged into the community - posting/viewing messages, taking polls, and viewing other various information.
All in all I'd say not bad for a J2EE application at a cost of about $1500.
Web Application Description:
15 CMP Entity Beans
3 Stateless Session Beans
1 Stateful Session Bean
Sun Java Center J2EE Business Tier Design Patterns Used:
Session Facade (Stateful and Stateless Session Facade Strategy)
A variation of the Value Object Pattern (Value objects to/from Entity Beans are used for data adds, updates, and deletes. As JDO gains support, the value objects will be JDO objects and the CMP entity beans will no longer be needed.)
Service Locator Pattern
Direct Access Objects are used to retrieve views of data from the database.
Sun Java Center Presentation Tier Design Patterns Used:
A variation of the Front Controller Pattern, Servlet Front Strategy.
Composite View Pattern
View Helper Pattern
Simple Presentation Tier/Business Tier interactions for data adds, updates, and deletes:
Presentation Tier <-> Session Facades <-> Value Objects <-> Entity Beans
Simple Presentation Tier/Business Tier interactions for views of data.
Presentation Tier <-> Session Facades <-> View Objects <-> Direct Access Objects (JDBC)
I made the following logging configuration changes to the default JBoss/Jetty setup but other than that I'm running it straight out of the box.
In <jboss root>/server/default/conf/log4j.xml I added just under the line .
I changed the CONSOLE threshold appender to FATAL, .
In <jboss root>/server/default/deply/jetty-plugin.sar META-INF/jboss-service.xml I commented out the HTTP request log,