[Geoserver-users] GeoServer WMS extremely slow rendering OSM data.

Hi All,

I tried to render GeoServer OSM layer on my world wind map client and the
performance is very slow. I suspect there may be some configuration issues
that I did not do right. Not sure if it is caching or database issue.
Below is my environment:

OS: CentOS 6.5
RAM: 16 GB
Database: PostgreSQL 9.3/PostGIS 2.2
OSM dataset: North America
Tomcat 7.0.50
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8
-server -Xms1024m -Xmx2048m
-XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m
-XX:MaxPermSize=256m -XX:+DisableExplicitGC"
Tomcat and Database are on the same machine.
GeoServer Caching Defaults:
Enable direct integration with GeoServer WMS - enabled
Automatically configure a GeoWebCache layer for each new layer or layer
group.
Default matafile size: 4x4
Default Cached Gridsets:
Gridset CRS Tile Dimension Zoom
Levels Disk Usage
EPSG:4326 EPSG:4326 256x256 22
0.0 B
EPSG:900913 EPSG:900913 256x256 31
0.0 B

Below are some of the messages from Tomcat's catalina.out:
Request: getMap
        Styles = [StyleImpl[ name=polygon]]
        Width = 512
        Height = 512
        Tiled = false
        Palette = null
        FeatureVersion = null
        SRS = CRS:84
        Layers = [org.geoserver.wms.MapLayerInfo@anonymised.com]
        MaxFeatures = null
        Crs = GEOGCS["WGS84",
  DATUM["WGS84",
    SPHEROID["WGS84", 6378137.0, 298.257223563]],
  PRIMEM["Greenwich", 0.0],
  UNIT["degree", 0.017453292519943295],
  AXIS["Geodetic longitude", EAST],
  AXIS["Geodetic latitude", NORTH],
  AUTHORITY["Web Map Service CRS","84"]]
        Bbox = ReferencedEnvelope[-63.0 : -54.0, 45.0 : 54.0]
        RemoteOwsType = null
        RemoteOwsURL = null
        Env = {}
        FormatOptions = {}
        Angle = 0.0
        CQLFilter = null
        Elevation =
        FeatureId = null
        StartIndex = null
        ViewParams = null
        BgColor = java.awt.Color[r=255,g=255,b=255]
        Transparent = true
        SldBody = null
        ValidateSchema = false
        Sld = null
        SldVersion = null
        TilesOrigin = null
        Exceptions = SE_XML
        Buffer = 0
        Filter = null
        Format = image/png
        Filters = null
        Time =
        Get = true
        RawKvp = {CRS=CRS:84, TRANSPARENT=TRUE, BBOX=-63.0,45.0,-54.0,54.0,
VERSION=1.3, FORMAT=image/png, SERVICE=WMS, HEIGHT=512, REQUEST=GetMap,
LAYERS=osm:north_america_polygon, STYLES=, WIDTH=512}
        BaseUrl = http://172.16.203.150:8080/geoserver/
        RequestCharset = UTF-8
        Version = 1.3
        Request = GetMap

13 Feb 13:30:28 ERROR [geotools.rendering] - Unable to obtain connection:
Cannot get a connection, pool error Timeout waiting for idle object
java.lang.RuntimeException: Unable to obtain connection: Cannot get a
connection, pool error Timeout waiting for idle object
        at
org.geotools.jdbc.JDBCDataStore.createConnection(JDBCDataStore.java:1679)
        at
org.geotools.jdbc.JDBCDataStore.getConnection(JDBCDataStore.java:1619)
        at
org.geotools.jdbc.JDBCDataStore.getConnection(JDBCDataStore.java:1649)
        at
org.geotools.jdbc.JDBCFeatureSource.getReaderInternal(JDBCFeatureSource.java:557)
        at
org.geotools.data.store.ContentFeatureSource.getReader(ContentFeatureSource.java:563)
        at
org.geotools.data.store.ContentFeatureCollection.features(ContentFeatureCollection.java:165)
        at
org.geoserver.feature.RetypingFeatureCollection.features(RetypingFeatureCollection.java:45)
        at
org.geoserver.feature.RetypingFeatureCollection.features(RetypingFeatureCollection.java:31)
        at
org.geotools.renderer.lite.StreamingRenderer.drawPlain(StreamingRenderer.java:2481)
        at
org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:2051)
        at
org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:837)
        at
org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:481)
        at
org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:251)
        at
org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:123)
        at org.geoserver.wms.GetMap.executeInternal(GetMap.java:521)
        at org.geoserver.wms.GetMap.run(GetMap.java:253)
        at org.geoserver.wms.GetMap.run(GetMap.java:124)
        at
org.geoserver.wms.DefaultWebMapService.getMap(DefaultWebMapService.java:328)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

Note: When I had smaller OSM dataset such as just state of Florida,
GeoServer rendered the layer very fast. Not sure why it is very slow with
bigger dataset.

I hope someone can tell me what I need to do to make GeoServer renders my
OSM data faster. Please let me know if you need more information.

Many thanks in advance.

Regards,
Tam

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/GeoServer-WMS-extremely-slow-rendering-OSM-data-tp5103703.html
Sent from the GeoServer - User mailing list archive at Nabble.com.