Despite running JVM supposedly being rock-solid and stable I see enough JVM who cant take the load, most likely to non-optimal settings, throwing heap dumps.
A while ago I struggled to open Thread Dumps I can open heap dumps with VisualVM (Version 1.3.7 at the time of writing)
Heap Dump File
Beware, with significant heap dump files (in my sample 700MB) it can take quite a while to open or review the results. Open thread dump list took a good 10 minutes.
Long Processing Times
Despite moving on to JBoss progressively I still share my findings, often they apply to other products too.
For a public facing server you want to reveal as little background information as possible. In Glassfish you can hide create custom 404 and 500 error pages (previous post), but you should also hide the server info that comes with the server header, easily revealed by a tool ike the Firefox plugin httpfox.
There are 2 crucial settings you must change:
- JVM setting for product name: -Dproduct.name=”My App Server”
- Remove the “XPowered By” flag
As result you will have a pretty generic response header
Once you get into a production like stage with more data volume, more users, etc. you will find yourself pretty fast in the situation where Glassfish gets some hickups or slowness. An expected situation if you did not change the default parameters out of the box which are chosen to make Glassfish to run even on a small box.
We ran into some kind of concurrency problems with JDBC pools and thread where Glassfish appeared to be hanging. One approach is to create thread dumps for the JVM.
With Glassfish we have a few options:
Run jps which returns you the list of applications running a JVM, choose the PID and execute
jstack <PID> or jstack -F <PID> > td.log
Go the Glassfish_HOME/bin folder and execute
./asadmin --user admin generate-jvm-report --type=thread > threaddump.txt
- kill -3 <PID>
Supposed to create a dump in the default log folder of Glassfish. Doesnt work for me.
With the (or better more than 1) file at hand you can evaluate them by hand or use some of the tools around. I am still struggling to make the tool analyzing my dumps. They simply open the files like a editor.
Finally version 5.0 of the growing popular Ajax-Web-Framework is released. Quite a number of new and updated features certainly drives up the number of users and pushes the community further. Find more information at zkoss.org. As usual the Netbeans plugin will most probably follow in a few days time. Keep you updated.
Starting next week (Monday 12th) there is a one-week codecamp on the Java EE6 features. I did previously the “online” seminars from Sang Shin at www.javapassion.com. Find more info at here.
For those who could not attend the conference (sorry, not my timezone!), here the screencasts (you need a SDN account)
The waiting is over, finally we get our hands on a production release of EE6 and Glassfish V3. Last week (Dec 10th) released, you also get it together with Netbeans 6.8. There is lot of attention and coverage on the latest version of the enterprise platform, so I spare you from my personal views, though I was really looking forward to use it beyond previews and beta’s. I am excited to work with the matured and now “rightsized” framework. Time to get active on writing tutorials and books.
Some useful links with more details: