1. 概述
FineBI 是一款純 B/S 端的商業智慧分析服務平台,支援透過 Web 應用伺服器將其部署在伺服器上,提供企業雲伺服器。
因此對伺服器有一定的配置要求,當伺服器不能滿足 BI 使用時,會出現當機風險。
FineBI 在部署後需要修改使用記憶體和其他參數,確定伺服器穩定運作。
注:本文主要介紹如何修改記憶體,其他參數的修改方法,請參考 Java虛擬機檢查。
2. 記憶體簡介
2.1 內容分類
FineBI使用的物理記憶體分為 Heap 記憶體和直接物理記憶體。
強烈建議物理機/雲主機記憶體至少 16GB,物理記憶體太小,會嚴重影響 FineBI 計算效能和系統穩定性。
FineBI 使用的物理記憶體 BIMax 要求:BIMax = Xmx + MaxDirectMemorySize + FineIO + Other。為了保障主機穩定性,要求 BIMax <= 使用者伺服器記憶體 * 7/8。
建議修改的記憶體相關配置項包括:
記憶體配置參數 | 說明 | 建議值 |
---|---|---|
Xmx | 指定Java堆的最大記憶體大小 它設定堆的上限,當堆大小達到該值時,JVM將停止分配新的記憶體並觸發垃圾回收 | 建議: 8GB <= Xmx < 32 GB或者 40GB <= Xmx <= 64GB 注:< 8GB 有當機風險,32GB ~ 40GB 會導致效能問題,> 64GB 效能差 使用者可在 健康巡檢 查看推薦的「堆內記憶體」大小(Xmx 值) |
Xms | 指定Java堆的初始記憶體大小 它設定堆的初始大小,JVM會在啟動時分配該大小的記憶體 | 建議 Xms = Xmx |
MaxDirectMemorySize | 堆外NIO記憶體,指定直接記憶體(Direct Memory)的最大大小 直接記憶體不受Java堆大小的限制,透過本地記憶體直接分配,而不是在Java堆中分配 | 建議 4GB 不限制最大值,但需要考慮使用者伺服器記憶體的大小,FineBI 使用的記憶體(BIMax)<= 使用者伺服器記憶體 * 7/8 |
Dfineio.read_mem_limit | fineIO讀記憶體 | 建議 2GB |
Dfineio.write_mem_limit | fineIO寫記憶體 | 建議 1GB |
2.2 記憶體上限溢位的現象
預覽範本時報錯記憶體上限溢位:java.lang.OutOfMemoryError:Java heap space
Tomcat 後臺提示 Memory is over threshold
報錯:gc overhead
報錯:記憶體上限溢位
記憶體佔用過高
工程用久了回应速度慢,出現卡頓
預覽儀表板經常出現等待佇列中
伺服器壓力大
3. 修改Tomcat下工程記憶體
3.1 Linux
1)關閉Tomcat伺服器。
2)進入%Tomcat_HOME%\bin目錄。尋找名為setenv.sh的檔案。如果檔案不存在,可以建立一個新的setenv.sh檔案。
注:請確定setenv.sh檔案具有可執行權限。如果沒有可執行權限,可以使用以下命令進行設定:chmod +x setenv.sh
3)使用正文編輯器開啟setenv.sh檔案。在檔案中新增/修改以下行來設定:
JAVA_OPTS="$JAVA_OPTS -Xms8192m -Xmx8192m"
JAVA_OPTS="$JAVA_OPTS -XX:MaxDirectMemorySize=2g"
JAVA_OPTS="$JAVA_OPTS -Dfineio.read_mem_limit=2"
JAVA_OPTS="$JAVA_OPTS -Dfineio.write_mem_limit=1"
4)儲存並關閉setenv.sh檔案。
5)重啟Tomcat伺服器以使修改生效。
3.2 Windows
1)關閉Tomcat伺服器。
2)進入%Tomcat_HOME%\bin目錄。尋找名為setenv.bat的檔案。如果檔案不存在,可以建立一個新的setenv.bat檔案。
3)使用正文編輯器開啟setenv.bat檔案。在檔案中新增新增以下行來設定:
set JAVA_OPTS=%JAVA_OPTS% -Xms8192m -Xmx8192m
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxDirectMemorySize=4g
set JAVA_OPTS=%JAVA_OPTS% -Dfineio.read_mem_limit=2
set JAVA_OPTS=%JAVA_OPTS% -Dfineio.write_mem_limit=1
4)儲存並關閉setenv.bat檔案。
5)重啟Tomcat伺服器以使修改生效。
4. 修改直接部署的工程記憶體參數
若工程直接部署在作業系統中,可直接在%FineBI%/bin目錄下的配置檔案中修改記憶體的大小。
4.1 Linux/Windows
1)關閉FineBI工程。
2)進入%FineBI_HOME%\bin目錄。尋找名為finebi.vmoptions的檔案。
3)使用正文編輯器開啟finebi.vmoptions檔案,新增/修改以下行:
-Xms8192m
-Xmx8192m
-XX:MaxDirectMemorySize=4g
-Dfineio.read_mem_limit=2
-Dfineio.write_mem_limit=1
4)儲存並關閉檔案。重啟FineBI工程生效。
4.2 Mac
1)關閉設計器。
2)進入%FR_HOME%\bin目錄,右擊designer.app,點選「顯示包內容」。
3)開啟Content/vmoptions.txt檔案,新增/修改以下行:
-Xms8192m
-Xmx8192m
-XX:MaxDirectMemorySize=4g
-Dfineio.read_mem_limit=2
-Dfineio.write_mem_limit=1
4)儲存並關閉檔案。重啟FineBI工程生效。
5. 修改weblogic下工程記憶體
5.1 Linux
1)進入WebLogic域(Domain)的bin目錄下。尋找setDomainEnv.sh檔案。
2)使用正文編輯器開啟setDomainEnv.sh檔案。在檔案中新增以下行來設定:
MEM_ARGS="-Xms8g -Xmx8g -XX:MaxPermSize=4g -XX:MaxDirectMemorySize=4g"
MEM_ARGS="-Djava.awt.headless=true -Dfineio.read_mem_limit=2 -Dfineio.write_mem_limit=1"
3)儲存並關閉setDomainEnv.sh檔案
4)重啟WebLogic Server以使修改生效。
5.2 Windows
1)進入WebLogic域(Domain)的bin目錄下。尋找setDomainEnv.cmd檔案。
2)使用正文編輯器開啟setDomainEnv.cmd檔案。在檔案中新增以下行來設定:
set MEM_ARGS=-Xms8g -Xmx8g -XX:MaxPermSize=4g -XX:MaxDirectMemorySize=4g
set MEM_ARGS=-Djava.awt.headless=true -Dfineio.read_mem_limit=2 -Dfineio.write_mem_limit=1
3)儲存並關閉setDomainEnv.cmd檔案
4)重啟WebLogic Server以使修改生效。
6. 修改WebSphere下工程記憶體
1)使用管理者憑據登入到 WebSphere 管理控制檯。
2)在導航欄,點選「伺服器>伺服器類型>WebSphere Application Server」。
3)點選需要修改的應用名稱,點選「伺服器基礎結構>Java和進程管理>進程定義」。
4)點選「Java虛擬機」,即可修改初始堆大小和最大堆大小。
5)在「通用 JVM 參數」中,可修改和新增一些JVM參數。
-Xss1024k
-XX:MaxDirectMemorySize=4096m
-Dfineio.read_mem_limit=2
-Dfineio.write_mem_limit=1
6)完成修改後,點選「應用」即可儲存對伺服器配置的更改。
7)重啟WebSphere伺服器以使修改生效。
7. 修改WildFly下工程記憶體
1)開啟Wildfly安裝目錄,導航到Wildfly的配置檔案目錄。在 Wildfly10 及更高版本中,該目錄位於standalone/configuration。
2)找到名為standalone.conf(Linux)或standalone.conf.bat(Windows)的檔案,並使用正文編輯器開啟它。
3)在開啟的檔案中,可以找到關於JVM設定的部分。在JAVA_OPTS變數中,您可以設定JVM的記憶體參數。