I develop my website using a MacBook Pro retina, and deploy on windows. And I noticed that my Macbook Pro is a lot faster than the standard GeoServer install.
I use Geoserver only to serve the WMS layers, vector data which is stored in postgis.
So I needed to tune GeoServer on Windows for optimal performance. I googled around, and found I needed to make the following changes:
- make sure jvm runs in
- make sure jvm is allocated enough memory
- optimise jvm settings
- install native JAI/ImageIO binaries
- switch to production logging
I used the standard Geoserver binary install, so to tune the jvm settings, you have to edit
c:\program files\Geoserver xxx\wrapper\wrapper.conf and add the following lines:
# Java Additional Parameters wrapper.java.additional.1=-Djetty.home=. wrapper.java.additional.2=-DGEOSERVER_DATA_DIR="%GEOSERVER_DATA_DIR%" wrapper.java.additional.3=-server wrapper.java.additional.4=-Xmx2048M -Xms2048m wrapper.java.additional.5=-XX:SoftRefLRUPolicyMSPerMB=36000 wrapper.java.additional.6=-XX:MaxPermSize=128m wrapper.java.additional.7=-XX:NewRatio=2
to be able to run the jvm in server mode, I had to copy
$JAVA_HOME\bin\server which feels like an awesome hack.
But Geoserver does seem a lot quicker.
I read the wms shootout benchmarks (2011) and one of the results showed that MapServer was a lot quicker on linux (vs. windows).
So that has got me wondering though, what possible other things I could do to improve performance.
- deploy geoserver on linux vs windows?
- switch containers: jetty vs tomcat vs jboss, or doesn’t that make much of a difference?
- or how hard would it be to switch to a “quicker” wms, e.g. mapnik/mapserver
So since none of this questions I can find answered somewhere on the web (at least not easily, and i asked), I will probably be doing some benchmarks for myself soon.