Geoserver testing ..

If you havent already heard, GS1.5 has been released and offers lots of little goodies hidden amongst the changelog. After lurking in the #geoserver channel picking up tidbits here and there i wanted to run some quick tests to confirm these magical WFS improvements. Refer to the following threads re: performance,

FYI, the test interface is php/Curl (local) -> geoserver 1.5 (local) -> ArcSDE (remote). Curl just allows finer control of the WFS POST requests

Partial-Buffer

15k Cadastral features
Tomcat 5.5 + …

* JDK 1.4.2

ZIP: 40.33sec (775kb)
GML: 6.85sec (11.5mb)
GML-GZ: 24.52sec (618kb)

Partial-Buffer2

15k Cadastral features
Tomcat 5.5 + …

* JDK 1.4.2

ZIP: 36.43sec (775kb)
GML: 6.52sec (11.5mb)
GML-GZ: 24.11sec (618kb)

* JDK 1.6u1

ZIP: 34.31sec (775kb)
GML: 5.88sec (12.0mb)
GML-GZ: 19.32sec (618kb)

:-(

Unfortunately i did not see a significant improvement in my testing of both the JDK and new Service strategies. Perhaps the bottleneck is in the I/O to the SDE datastore and not Geoserver itself. No time to test further on local datastores, but i promise i’ll post a followup comment with these later…

Whats surprising is the time required to create the zip’s. Everyone knows there is a cost involved with saving and writing the zip (instead of streaming the gml) but i didnt realise it was that much. Its a shame GML is not as common place as the old shapefile otherwise i would certainly be pushing gml2-gzip or even better, native “accept-encoding: gzip” headers when requesting GML2 output to the containers. In my experience as soon as you tell anyone that you can output a shapefile from Geoserver WFS, you can forget them ever considering GML again. These numbers may sway some of them at least

Further testing to come ..

5 thoughts on “Geoserver testing ..”

  1. Hi Chris,
    seeing your times I definitely think the SDE datastore it’s the bottleneck. To give you an idea, whilst I can extract 8MB/s GML from a shapefile, I can only do 4MB/s from Postgis (given the same data set, and dumping it fully to make spatial indexes contribution null).
    In your example it seems the best case performance for GML is only 2MB/s. Now, there can be significant differences in the enviroment,
    for example, in my case I’m on a desktop PC with two ide disks in raid 0, and postgis is sitting on the same machine as Geoserver. Putting a network in between would certainly make things quite a bit slower, because you have to consider network latency too.

    That said, I have a set of patches sitting on my disk that would make GML encoding a lot faster (on my PC, the bottleneck when reading from Postgis is still turning numbers into strings using DecimalFormat), but if the datastore performance is sub par, that won’t help as much as in my local tests.

    About shapefiles, heh, we have to create the files on a temp folder, zip them, and only after that we can stream them away. Worth investigating thought, it may be that the bottleneck is the shapefile creation (the only part I think I could optimize).

  2. Soo, I made some tests of my own because the result above where fishy and… I could reproduce them, but only with the version we ship with the installer.

    First try, version 1.5.0 installed from windows installer:
    speed as reported by wget is the same, around 9-10MB/s, and yes, I made sure both PARTIAL-BUFFER, PARTIAL-BUFFER2 were both used making Geoserver log at FINE level.

    Second try, 1.5.0 launched from my Eclipse (using an embedded launcher): PB 4MB/S, PB2 9-10MB/S. Hmmm….

    Third try, the very same 1.5.0 copied inside a full blown Tomcat 5.5.20: PB 4MB/s, PB2 8-9MB/s. ???

    Fourth try, 1.5.0 copied insied a full blown Jetty 6.0.1:
    PB 9MB/s, PB2 9-10MB/s

    Hey, what’s going on here? It seems Jetty 6.0.1 fully configured has a secret sauch that makes it faster than Tomcat, and faster than embedded one I use for testing inside Eclipse. What is it, I have no idea. Can you try out with Tomcat too and see if you replicate the same behaviour?

  3. Andrea, did you mean try it out in Jetty? Those initial tests were using Tomcat5.5 ..

    Give me a day and ill post something back to the list instead of continuing here :)

Comments are closed.