[GIS] How to configure JVM to run in server mode when using Geoserver as a Windows service

geoserverjettyjvm

I have been reading this article about putting Geoserver into a production environment.

Section "4.1 Java Virtual Machine" is confusing me a bit. This section mentions that in a production environment Geoserver should be using the JVM in "server mode" and it also shows you how to check what mode your JVM is currently in. As it turns out mine is running in "client mode", which appears to be default for windows.

I thought that I could get Geoserver to use the JVM in "server mode" by adding this line to my wrapper.conf file.

wrapper.java.additional.4=-server

After I added that line, I restarted my service (even bounced the server on the second attempt) and checked the JVM again by going "java -version" but it still appears to be in "client mode".

I know my JVM can perform server mode because this "java -server -version" returns results like in the article.

Have I done the right thing? Or have I missed a step somewhere?

Windows 2003 – Geoserver 2.1.4 – Java version 1.6.0_23

Thanks

Ando

Best Answer

Just running java -version won't be affected by the parameters you set in the virtual machine running GeoServer, to be sure you should run, locally to your server, something like VisualVM, that should tell you if the VM is running in server or client mode among a ton of other info (I don't remember exactly if the server/client thing is exposed, but I believe it should at least be visible somewhere in the JMX tree).

That said, if your machine is a Windows server and has at last 2GB of memory and at least 2 cores the JVM should enter in server mode by itself (this behavior is called "server ergonomics", it's odd that it does not? See http://java.sun.com/docs/hotspot/gc5.0/ergo5.html