Java Continues to Suck

I was up late last night helping a client load-test a large web portal site they’re developing. The primary server is a Sun 250 with half a gig of RAM and dual CPUs. It runs Stronghold and the portal is a built on top of a bulky Java Portal architecture called Epicentric, which in turn sits on top of JRun & the Sun JVM. Like all Java-based stuff I’ve worked with it takes massive amounts of memory. Right now, the server can handle about 30 simultaneous users before things start bombing off. Running top, you can watch the available RAM drop in direct proportion to the number of users while the memory being used by Java increases. Once it hits the swap file, all the Java-based stuff starts failing and only static HTML pages continue to work (Stronghold, which is just a version of Apache you can pay a lot of money for, held up fine throughout the testing). At the moment I’m recommending they go to at least 1 Gig of RAM. It looks to me like the JVM is broken though, as it never releases any of the RAM it allocates. Hours after our tests it was still sucking up hundreds of meg of RAM, slowing the entire system to a crawl. Only way we’ve found to fix it is to kill Java and JRun and restart them. Yuck.

Everytime I read articles about how wonderful Java is I start thinking I should try switching to it for our own web apps. Everytime I work with a client who’s using it, I end up being thankful we still use mod_perl for our own stuff.