GeoServer WMS地图请求内存限制问题

  • org.geoserver.platform.ServiceException: Rendering request would use 112517KB, whilst the maximum memory allowed is 65536KB
        at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:344)
        at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:286)
        at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:141)
        at org.geoserver.wms.GetMap.executeInternal(GetMap.java:653)
        at org.geoserver.wms.GetMap.run(GetMap.java:285)
        at org.geoserver.wms.GetMap.run(GetMap.java:131)
        at org.geoserver.wms.DefaultWebMapService.getMap(DefaultWebMapService.java:320)
        at sun.reflect.GeneratedMethodAccessor374.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoi

  •  

  • 应用需求:GeoServer发布WMS地图服务后,需要请求获取一张较大的地图图片,请求地址如下:

    http://localhost:8080/geoserver/wms?service=WMS&;version=1.1.0&;request=GetMap&;layers=campus&;styles=&;bbox=4.528514,4.950175,4.546676,4.958241&;width=7430&;height=3300&;srs=EPSG:4326&;format=image/png

    其中,输出的地图图片的高、宽分别为:3300、7430。

    问题一:在浏览器中地址栏中回车发送请求后,抛出以下异常,提示地图渲染超过了65536KB的大小限制:

    <pre name=”code” class=”html”><?xml version=”1.0″ encoding=”UTF-8″ standalone=”no”?><!DOCTYPE ServiceExceptionReport SYSTEM “http://localhost:8080/geoserver/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd”> <ServiceExceptionReport version=”1.1.1″ > <ServiceException>Rendering request would use 71833KB, whilst the maximum memory allowed is 65536KB</ServiceException></ServiceExceptionReport>

    解决一:登录 GeoServer Web Admin Page 管理页面,在左侧的服务中,点击WMS,在右侧把Max rendering memory (KB)

    的值由65536改为了6553600以确保够用。重新请求即可成功。

     

    问题二:

    当继续增加请求的图片大小时(高、宽:14860、6600),仍然会抛出异常,请求URL和异常信息如下:

    http://localhost:8080/geoserver/wms?service=WMS&;version=1.1.0&;request=GetMap&;layers=campus&;styles=&;bbox=4.528514,4.950175,4.546676,4.958241&;width=14860&;height=6600&;srs=EPSG:4326&;format=image/png<?xml version=”1.0″ encoding=”UTF-8″ standalone=”no”?><!DOCTYPE ServiceExceptionReport SYSTEM “http://localhost:8080/geoserver/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd”> <ServiceExceptionReport version=”1.1.1″ > <ServiceException>java.lang.NegativeArraySizeExceptionnull</ServiceException></ServiceExceptionReport><?xml version=”1.0″ encoding=”UTF-8″ standalone=”no”?><!DOCTYPE ServiceExceptionReport SYSTEM “http://localhost:8080/geoserver/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd”> <ServiceExceptionReport version=”1.1.1″ > <ServiceException>java.lang.OutOfMemoryError: Java heap spaceJava heap space</ServiceException></ServiceExceptionReport> 解决二:开始菜单 >> Start GeoServer 右键属性,找到 “C:/Program Files (x86)/GeoServer 2.5/bin/ startup.bat

    ” ,用记事本打开:

    call “C:/Program Files (x86)/Java/jdk1.8.0/bin/java.exe” -DGEOSERVER_DATA_DIR=”C:/Program Files (x86)/GeoServer 2.5/data_dir” -Xmx512m -XX:MaxPermSize=128m -DSTOP.PORT=8079 -DSTOP.KEY=geoserver -Djetty.port=8080 -Djetty.logs=”C:/Program Files (x86)/GeoServer 2.5/logs” -jar “C:/Program Files (x86)/GeoServer 2.5/start.jar”

    修改其中的  -Xmx512m -XX:MaxPermSize=128m部分,修改如下:

    call “C:/Program Files (x86)/Java/jdk1.8.0/bin/java.exe” -DGEOSERVER_DATA_DIR=”C:/Program Files (x86)/GeoServer 2.5/data_dir” -Xmx1024m -XX:MaxPermSize=512m -DSTOP.PORT=8079 -DSTOP.KEY=geoserver -Djetty.port=8080 -Djetty.logs=”C:/Program Files (x86)/GeoServer 2.5/logs” -jar “C:/Program Files (x86)/GeoServer 2.5/start.jar”

    再次请求地图URL,问题解决。

  • 以上是GeoServer WMS地图请求内存限制问题的内容,更多 localhost 地图服务 Service 图片 的内容,请您使用右上方搜索功能获取相关信息。

转载自:https://blog.csdn.net/qnzhangqing/article/details/82530309

You may also like...