Playing with performance
jonlee Jun 11, 2003 12:11 PMWe've been playing around with and measuring performance on our applications the last week or so. As standard practice, we optimize and obfuscate our own Java application code to squeeze as much as we can out of hardware. The last week we've been looking at the effect of JBoss on performance. It turns out that JBoss/Jetty is already pretty sleek.
Our test setup is comprised of currently two configurations.
1) JBoss/Jetty with our application framework and demo (accesses 4 tables to compile a topic content page with no graphics) on Linux RedHat 7.2 PII 500 MHz with 192Mb, accessing a Postgresql database on a Linux RedHat 7.2 PII 333MHz with 96MB across a 10 Mbps LAN being accessed by a wireless client with a simulated load of 90 users, each requesting the page every 20 seconds - IBM Java 1.4.0
2) As above except client, JBoss/Jetty and database on a Win2k PIII 1.2 GHz with 384 Mb where Postgresql is running within Cygwin - Sun JDK 1.4.1_02
The load is not overly excessive and we get 160 ms and 40 ms average responses respectively after we tweaked JBoss. The former has limiting effects from the DB and the network as the average barely moved. We managed to scratch between 3 and 5 ms off the latter's response time.
We tweaked JBoss 3.2.0 by building from the sources using javac.optimize on and javac.debug off. We added the optimized channel listener from the separate Jetty 4.2.9 sources. We used Retroguard to code optimize (ant, jasper, pg73jdbc3, xalan, xercesImpl, log4j and log4j-boot). You lose debugging information on class crashes by doing these tweaks.
The interesting thing is although we didn't gain much performance from the tweaks (even on the fast machine), we shaved between 20 to 30 Mb of memory consumption from the Linux run-time footprint. We'll put up the Retroguard optimization scripts on our website by Monday if anyone is interested.
Anyhow, hope this gives people an idea of the magnitude of the responsiveness you can get from JBoss.