[Geoserver-devel] [JIRA] (GEOS-7339) Potential Memory Leak

nilgun celik created an issue

GeoServer / BugGEOS-7339

Potential Memory Leak

Issue Type:

BugBug

Affects Versions:

2.8.0

Assignee:

Unassigned

Created:

07/Dec/15 11:58 PM

Environment:

I am running Geoserver 2.8.0 on Ubuntu Server 14.04.

Geoserver versions:
Version
2.8.0
Git Revision
8e84a8a356073d09ed44b831c96ac4a2656e82ef
Build Date
30-Sep-2015 21:59
GeoTools Version
14.0 (rev 19819635d08697eaf28356e0fa8d084c77143387)
GeoWebCache Version
1.8.0 (rev 1.8.x/b346a3aa6cc433a312c4608b218881d8509a8780)

Tomcat setenv.sh:
export JAVA_OPTS=“-server -Xmx20000m -Xms1024m -XX:PermSize=256m -XX:MaxPermSize=1024m -XX:+UseParallelGC -XX:+UseParallelOldGC”

Also jai jars are replaced with native ones as explained here:
http://docs.geoserver.org/stable/en/user/production/java.html#install-native-jai-and-jai-image-i-o-extensions

Heap_dump is can be downloaded from here: https://www.dropbox.com/s/vx81zxsjyugmuun/geoserver_problem.tar.gz.zip?dl=0

Labels:

geoserver

Priority:

HighHigh

Reporter:

nilgun celik

After running geoserver about 8 days Geoserver becomes unresponsive. And does not come back until I restart Tomcat.

When I check memory usage, looks like it uses ~19.6GB of 20GB tomcat max memory. And the heap dump shows %97 of the memory consists of double. The dump can be downloaded from here: https://www.dropbox.com/s/vx81zxsjyugmuun/geoserver_problem.tar.gz.zip?dl=0

I am using Geoserver for serving tiles from existing stores as well as dynamically creating new layers from database tables or geotiff files via geoserver-manager. Though I am not sure what operations trigger the increase in memory usage.

The last logs written to catalina.out reports following errors:

org.geoserver.GeoserverInitStartupListener$1 errorOccurred
INFO: Problem occurs when computing a tile by the owner.
java.lang.RuntimeException: Cannot construct DataBuffer.
at com.sun.media.jai.util.DataBufferUtils.constructDataBuffer(DataBufferUtils.java:132)
at com.sun.media.jai.util.DataBufferUtils.createDataBufferDouble(DataBufferUtils.java:293)
at javax.media.jai.ComponentSampleModelJAI.createDataBuffer(ComponentSampleModelJAI.java:274)
at org.geoserver.jai.ConcurrentTileFactory.createTile(ConcurrentTileFactory.java:258)
at javax.media.jai.PlanarImage.createWritableRaster(PlanarImage.java:1982)
at javax.media.jai.PlanarImage.getData(PlanarImage.java:2160)
at javax.media.jai.PlanarImage.getData(PlanarImage.java:2016)
at it.geosolutions.jaiext.classifier.RasterClassifierOpImage.computeRect(RasterClassifierOpImage.java:106)
at javax.media.jai.OpImage.computeTile(OpImage.java:1221)
at javax.media.jai.PointOpImage.computeTile(PointOpImage.java:728)
at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904)
at javax.media.jai.OpImage.getTile(OpImage.java:1129)
at javax.media.jai.PlanarImage.getData(PlanarImage.java:2085)
at javax.media.jai.PlanarImage.getExtendedData(PlanarImage.java:2440)
at com.sun.media.jai.opimage.MosaicOpImage.computeTile(MosaicOpImage.java:432)
at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904)
at javax.media.jai.OpImage.getTile(OpImage.java:1129)
at javax.media.jai.PlanarImage.getData(PlanarImage.java:2085)
at javax.media.jai.PlanarImage.getExtendedData(PlanarImage.java:2440)
at com.sun.media.jai.opimage.MosaicOpImage.computeTile(MosaicOpImage.java:432)
at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904)
at javax.media.jai.OpImage.getTile(OpImage.java:1129)
at javax.media.jai.PlanarImage.copyData(PlanarImage.java:2343)
at javax.media.jai.RenderedOp.copyData(RenderedOp.java:2299)
at org.geoserver.gwc.layer.GeoServerMetaTile.createTile(GeoServerMetaTile.java:192)
at org.geoserver.gwc.layer.GeoServerMetaTile.writeTileToStream(GeoServerMetaTile.java:98)
at org.geowebcache.layer.TileLayer.saveTiles(TileLayer.java:655)
at org.geoserver.gwc.layer.GeoServerTileLayer.getMetatilingReponse(GeoServerTileLayer.java:572)
at org.geoserver.gwc.layer.GeoServerTileLayer.getTile(GeoServerTileLayer.java:518)
at org.geoserver.gwc.GWC.dispatch(GWC.java:662)
at org.geoserver.gwc.wms.CachingWebMapService.invoke(CachingWebMapService.java:84)
at org.geoserver.gwc.wms.CachingWebMapService.invoke(CachingWebMapService.java:55)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.geoserver.ows.util.RequestObjectLogger.invoke(RequestObjectLogger.java:55)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at com.sun.proxy.$Proxy57.getMap(Unknown Source)
at sun.reflect.GeneratedMethodAccessor239.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.geoserver.ows.Dispatcher.execute(Dispatcher.java:845)
at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:275)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)

Add Comment

Add Comment

This message was sent by Atlassian JIRA (v7.1.0-OD-02-030#71001-sha1:2ba8c0f)

Atlassian logo