1. 程式人生 > >GeoServer生產環境調優(部分)

GeoServer生產環境調優(部分)

主要內容來自:地理學博士王晨亮整理

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 JAInative 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=1024Width×Height×4

其中,WidthWidthHeightHeight分別是客戶端螢幕尺寸的寬和高,4表示支援透明渲染,1024表示單位為KB。如支援客戶端最大1080p的顯示渲染記憶體為8100KB= \frac {1920 \times 1080 \times 4}{1024}8100KB=10241920×1080×4,4K解析度的渲染記憶體為32400KB= \frac {3840 \times 2160 \times 4}{1024}32400KB=10243840×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