[Geoserver-users] Geoserver performance (kml)

Hello,

I have followed the “Geoserver in Production” doc but am still having performance issues, specifically maxing out the cpu (from one request) and using lots of RAM. I am thinking that it’s a hardware issure. Our servers are virtual and living on SAN, so adding cpu and ram is not a problem.

Here is the set up:

Windows Server 2008 w/ 1 Intel Xeon CPU E5450 @ 3.00 ghz and 1 gb of RAM , Apache 2.2, tomcat 6.0, Geoserver 1.7.1 with PostGIS datastores (Postgresql 8.3) living on a different server (same specs.)

The problem is primarily with KML requests. Geoserver was installed via a war file. Any one have any good configurations for a production environment (hardware, java specs,etc)?

Thanks in advance

Mike

Michael Tafel| GIS Specialist| Denver Regional Council of Governments|

Michael Tafel ha scritto:

Hello,

I have followed the “Geoserver in Production” doc but am still having performance issues, specifically maxing out the cpu (from one request) and using lots of RAM. I am thinking that it’s a hardware issure. Our servers are virtual and living on SAN, so adding cpu and ram is not a problem.

Hum, generally speaking, generating text based formats like KML takes
way more resources than just drawing an image (10-100 times more, both
in CPU terms, and in terms of the output size).

KML is particular because there are a lot of output options, lots
of different ways in which the output can be generated.
In particular I believe that 1.7.1 is the first release to use
the regionated mode by default. That mode requires GeoServer
to build a tile map on the first request, something which is expensive,
but is done just one time, but after that, it should be fast(er).

The first thing I would do would be to double check your postgis
tables has primary keys, as regionation requires them to be present in
order to work.

Besides that, I guess we need more details on the kind of data you
have (geometry type, number of records, available indexes),
and the regionation options you chose (if you did modify the defaults).

I'll let the KML experts chime in, as I'm a little out of touch with
the current state of our KML output.

Cheers
Andrea

--
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.

Andrea Aime wrote:

Michael Tafel ha scritto:
  

Hello,

I have followed the “Geoserver in Production” doc but am still having performance issues, specifically maxing out the cpu (from one request) and using lots of RAM. I am thinking that it’s a hardware issure. Our servers are virtual and living on SAN, so adding cpu and ram is not a problem.

Hum, generally speaking, generating text based formats like KML takes
way more resources than just drawing an image (10-100 times more, both
in CPU terms, and in terms of the output size).

KML is particular because there are a lot of output options, lots
of different ways in which the output can be generated.
In particular I believe that 1.7.1 is the first release to use
the regionated mode by default. That mode requires GeoServer
to build a tile map on the first request, something which is expensive,
but is done just one time, but after that, it should be fast(er).

The first thing I would do would be to double check your postgis
tables has primary keys, as regionation requires them to be present in
order to work.

Besides that, I guess we need more details on the kind of data you
have (geometry type, number of records, available indexes),
and the regionation options you chose (if you did modify the defaults).

I'll let the KML experts chime in, as I'm a little out of touch with
the current state of our KML output.

Cheers
Andrea
  
What are you doing during these tests ? For example, if you are serving regionated data (that has not been regionated previously) to Google Earth then this makes sense. In that case it would help if you can check that the feature type is set to use native sort if it's more than a few thousand features, and, as Andrea said, create the appropriate indexes in Postgis.

We also have a cache for regionated data, http://localhost:8080/geoserver/gwc/service/kml/layername.<desired format>.kml , but the first time it's requested you do not gain anything.

Don't take Java's memory consumption at face value, the Java Virtual Machine will take whatever it can get and hold on to it. I'm also reluctant to interpret the 100% CPU literally. I don't know whether this applies to the virtualization technology you use, but the ones I use tend to not show I/O Wait in guest systems, everything is counted as regular processing time.

--
Arne Kepp
OpenGeo - http://opengeo.org
Expert service straight from the developers