您的位置:首页 > 其它

GeoServer生产环境调优(部分)

2017-01-24 08:47 197 查看


主要内容来自:地理学博士王晨亮整理


JVM调优

由于Geoserver是JavaEE项目,其性能直接受JVM参数影响,因此首先就需要对其进行JVM级别的优化。Geoserver部署在哪里,就设置哪里的JVM参数。


Java堆内存

Java堆内存是最基本的Java开发优化参数,无须解释。设置内存的数值需要恰当,既不能浪费剩余内存又不能抢占其他资源所必须的内存。

参数备注
-Xms2048m初始
-Xmx2048m最大


其他JVM调优参数

这部分主要根据GeoServer运行耗费资源的特点,对JVM参数进行调整优化

参数备注
-server确保使用服务器版本JVM,编译字节码速度更快,更多性能优化。此参数在Linux下一般默认,但设置上没有任何坏处。
-XX:SoftRefLRUPolicyMSPerMB=3600控制GeoServer实例的生命期,使其生存更长提高性能
-XX:+UseParallelGC开启多线程垃圾回收机制,大多数环境配置默认启用
-XX:NewRatio=2处理更多短生命期对象
-Djava.awt.headless=true避免没有X-windows的错误
-XX:PermSize=256m -XX:MaxPermSize=256m增加分配给GeoServer的持久保存空间的最大空间。该部分主要存储类编译的字节码,由于GeoServer使用大量Java类,容易快速耗尽持久保存空间。


Java图像处理优化


原生JAI和ImageIO

GeoServer的图像处理功能使用了Java的JAI和JAI ImageIO功能,但由于Java的JAI和JAI ImageIO库默认是Java实现,若将其换为原生库可显著提高图像处理速度。注意,在windows下只有32位Java环境才可用,64位Java环境不可用原生库。下载和拷贝原生库文件的操作参考以下代码:

cd /tmp
wget http://download.java.net/media/jai/builds/release/1_1_3/jai-1_1_3-lib-linux-amd64.tar.gz wget http://download.java.net/media/jai-imageio/builds/release/1.1/jai_imageio-1_1-lib-linux-amd64.tar.gz gunzip -c jai-1_1_3-lib-linux-amd64.tar.gz | tar xf - && \
gunzip -c jai_imageio-1_1-lib-linux-amd64.tar.gz | tar xf - && \
mv /tmp/jai-1_1_3/lib/*.jar $JAVA_HOME/jre/lib/ext/ && \
mv /tmp/jai-1_1_3/lib/*.so $JAVA_HOME/jre/lib/amd64/ && \
mv /tmp/jai_imageio-1_1/lib/*.jar $JAVA_HOME/jre/lib/ext/ && \
mv /tmp/jai_imageio-1_1/lib/*.so $JAVA_HOME/jre/lib/amd64/


经过上述操作后,重启GeoServer,查看Server Status状态页中的native JAI和native JAI ImageIO两项是否为true,若显示为true说明原生库优化成功。


GeoServer服务配置


禁用多余服务

GeoServer中的每个服务(WMS,WFS,WCS和其他)都消耗服务器内存等资源。由于本系统平台只应用了其中的WMS服务,因此需要将GeoServer中其他服务(Services部分的WFS,WCS和WPS等)屏蔽来节省服务器资源。在Services中点击服务名称进入服务设置页面,确认去掉Enable的对勾,即完成对GeoServer的配置。

注意,在禁用WCS服务时,需要将Resource Consumption Limits的两个-1改为0才能提交。


WMS服务配置

WMS地图服务是楼盘大数据系统使用的地图服务,需对其进行以下配置:

在WMS配置页面中寻找资源消耗限制部分(Resource consumption limits),可按照下表的参考值进行配置。

参数参考值备注
Max rendering memory(KB)20480最大渲染内存,20480可满足大部分客户端全屏地图需求。具体数据可根据表后公式计算
Max rendering time(s)60最大渲染响应时间,避免某渲染请求响应时间过长带来的资源占用
Max rendering errors(count)1000最大渲染错误计数
其中,最大渲染内存MM(KB)的计算公式为,
M=\frac{
Width \times Height \times 4}{1024}M=​1024​​Width×Height×4​​

其中,WidthWidth和HeightHeight分别是客户端屏幕尺寸的宽和高,4表示支持透明渲染,1024表示单位为KB。如支持客户端最大1080p的显示渲染内存为8100KB=
\frac {1920 \times 1080 \times 4}{1024}8100KB=​1024​​1920×1080×4​​,4K分辨率的渲染内存为32400KB=
\frac {3840 \times 2160 \times 4}{1024}32400KB=​1024​​3840×2160×4​​


GWC配置

GWC是GeoWebCache的简称,是GeoServer内嵌的地图缓存服务器。在实际的生产环境中,地图缓存服务器应当是独立部署的结点,这样的优势是可以避免集群结点开启缓存配额后的文件锁冲突;另一方面,缓存切片及耗费CPU内存等资源,配置独立的地图缓存服务器可减少切片请求对地图服务器资源的占用。


GWC地图缓存配额

若集群结点均使用内嵌的GWC,会发生文件锁冲突问题。较简单的solution是禁用缓存配额。在GeoServer管理界面中,查找左侧面板Tile Caching部分,点击Disk Quota进入缓存配额管理界面,去掉Enable前对勾。


GWC缓存图层建立

在Tile Caching部分,点击TIle layers进入切片缓存界面,点击某图层一行的Seed/Truncate,进入GWC切图界面,一般按默认设置点击提交即可。


参考

GeoServer 配置调优(官网文档)

找了个比较全的操作方法:

【J2EE性能分析篇】JVM参数对J2EE性能优化的影响

http://www.cnblogs.com/zhishan/p/3316170.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  geoserver