FineBI 是一款純 B/S 端的商業智慧分析服務平台;支援透過 Web 應用伺服器將其部署在伺服器上,提供企業雲伺服器。因此對伺服器有一定的配置要求,當伺服器不能滿足 BI 使用時,會出現當機風險。
FineBI 在部署後需要修改使用記憶體和其他參數,確定伺服器穩定運作。
BI 使用的物理記憶體分為 Heap 記憶體和直接物理記憶體,如下圖所示:
FineBI 使用的物理記憶體 BIMax 要求:BIMax = Xmx + MaxDirectMemorySize + FineIO + Other。為了保障主機穩定性,要求 BIMax <= 使用者伺服器記憶體 * 7/8。具體介紹如下表所示:
注:< 8GB 有當機風險,32GB ~ 40GB 會導致效能問題嚴重,> 64GB 效能差
注:建議參數值為2~4G
2020-01-15 之前版本,FineIO 值與 MaxDirectMemorySize 相同
2020-01-15 至 2020-08-04 版本,若配置 -Dfineio.direct_mem_limit 参数,FineIO 值与其相同;若未配置,默认与 MaxDirectMemorySize 相同
2020-08-04 及之後版本,讀記憶體預設為 2G,寫記憶體預設為 1G,快取記憶體預設為 1G(不佔實際記憶體),也就是說,FineIO 預設佔用 3G 堆外記憶體
注1:在配置參數時,請先結束 BI 進程,修改參數儲存後重啓 BI 工程。
注2:強烈建議物理機/雲主機記憶體至少 16GB,物理記憶體太小,會嚴重影響 FineBI 計算效能和系統穩定性。
即修改最大堆內記憶體,保證工程效能穩定。
強烈建議手動配置 Xmx 參數,並且推薦記憶體修改在 8GB <= Xmx < 32 GB(一定要 < 32GB)或者40GB <= Xmx <= 64GB
注:< 8GB 有當機風險,32GB ~ 40GB 會導致效能問題嚴重,> 64GB 效能差。
如果是安裝包直接安裝 FineBI ,可以直接在%FineBI%/bin目錄下的finebi.vmoptions檔案中修改記憶體的大小。
Windows 以及 Linux/Unix 系統均修改該檔案(這裏是以 M 為單位)。
1)進入 %FineBI%/bin目錄下選擇 finebi.vmoptions ,如下圖所示:
2)該檔案內容為系統預設記憶體大小 4018m,可直接修改數值為自身需要的大小,並增加-XX:PerBytecodeRecompilationCutoff=-1 和 -XX:PerMethodRecompilationCutoff=-1參數,如下圖所示:
注1:Xmx與數字之間不要有空格。
注2:增加-XX:PerBytecodeRecompilationCutoff=-1 和 -XX:PerMethodRecompilationCutoff=-1參數是為了避免 JVM 的 Bug,JIT 的 Deoptimization 機制可能會導致運作緩慢。
3)修改後,重啓工程。
注: JVM 記憶體最小設定為 2048 ,即 2G,否則 FineBI 無法正常運作。
1)進入 %FineBI%/bin目錄下選擇 finebi.vmoptions,編輯該檔案即可。開啟檔案的命令如下:
cd %FineBI%/binvi finebi.vmoptions
2)對該文檔進行編輯,並儲存。-Xmx 值表示的是JVM最大可佔用的記憶體,該值的單位預設是M,可以直接改成G單位的值。如-Xmx8G ,並增加-XX:PerBytecodeRecompilationCutoff=-1 和 -XX:PerMethodRecompilationCutoff=-1 參數,如下圖所示:
3)重啓工程,詳情參見:Linux 中啟動 FineBI
4)輸入 ps -ef|grep tomcat查看進程,檢查參數是否配置成功,若如下所示進程資訊中出現參數相關資訊,則表示配置成功:
1)Windows 系統下修改%Tomcat%/bin目錄下 catalina.bat 檔案,增加如下命令
set JAVA_OPTS=%JAVA_OPTS% -Xms4g -Xmx8gset JAVA_OPTS=%JAVA_OPTS% -XX:PerBytecodeRecompilationCutoff=-1 set JAVA_OPTS=%JAVA_OPTS% -XX:PerMethodRecompilationCutoff=-1
注:%JAVA_OPTS% 表示使增加的每一條配置參數都生效,若不使用%JAVA_OPTS%直接增加多條參數,則會因為配置改寫讀取而無法生效。使用者也可將所有配置增加在一條參數中,例如:
set JAVA_OPTS=%JAVA_OPTS% -Xms4g -Xmx8g -XX:PerBytecodeRecompilationCutoff=-1 -XX:PerMethodRecompilationCutoff=-1
修改完成後重啓工程,在%Tomcat%/logs 下查看 catalina.log 日誌,如下圖所示:
2)Linux/Unix修改 catalina.sh 檔案,新增的命令如下:
JAVA_OPTS="$JAVA_OPTS -Xms4g -Xmx8g -XX:PerBytecodeRecompilationCutoff=-1 -XX:PerMethodRecompilationCutoff=-1"
注:$JAVA_OPTS 表示使增加的每一條配置參數都生效,若不使用$JAVA_OPTS直接增加多條參數,則會因為配置改寫讀取而無法生效。
3)重啓工程。
4)輸入 ps -ef|grep tomcat 查看進程,檢查參數是否配置成功,若如下所示進程資訊中出現參數相關資訊,則表示配置成功:
可直接修改 start.bat (Windows 系統)或 start.sh(Linux/Unix 系統),修改的方法與 3.2.1 節一致。
修改 Weblogic 安裝目錄%Weblogic%/domains/使用者工程名/下的 startWebLogic 檔案。
1)Windows 系統修改 startWebLogic.bat 檔案,增加如下命令:
set MEM_ARGS= -Xms4096m–Xmx8192m -XX:PerBytecodeRecompilationCutoff=-1 -XX:PerMethodRecompilationCutoff=-1
2)Linux/Unix 修改 startWebLogic.sh 檔案,增加如下命令:
MEM_ARGS=" -Xms4096m -Xmx8192m -XX:PerBytecodeRecompilationCutoff=-1 -XX:PerMethodRecompilationCutoff=-1"
修改后重启工程,查看进程即可看到配置生效,如下所示:
修改%Weblogic%/common/bin目錄下的 commEnv.bat 或者 commEnv.sh 檔案,方法同 3.3.1 節。
在控制檯中選擇「伺服器>應用過程伺服器>進程定義>java虛擬機進行設定」,選擇 sever1。
點選「java和進程管理>進程定義」,如下圖所示。
點選「java虛擬機」。
設定「JVM參數」,設定完確定並儲存即可。
在「通用 JVM 參數」中增加「-PerMethodRecompilationCutoff=-1」和 「-XX:PerMethodRecompilationCutoff=-1」,如下圖所示:
注1:如果遇到有java.lang.OutOfMemoryError: PermGen space 這種異常拋錯,可以在所有修改記憶體的地方加上一個命令語句:-XX:MaxPermSize=256m來進行限制。
注2:所有調整記憶體的數字都要根據自己的資料量來進行調整。
MaxDirectMemorySize 參數為 NIO 最大堆外記憶體,若不配置會嚴重影響 FineBI 計算效能和系統穩定性,強烈建議手動配置該參數,並且至少為 2GB。
如果是安裝包直接安裝 FineBI ,可以直接在%FineBI%/bin目錄下的FineBI.vmoptions檔案中修改。Windows 以及Linux/Unix系統均修改該檔案(這裏是以 M 為單位),如下圖所示:
增加參數如下圖所示:
-XX:MaxDirectMemorySize=2g
配置完成後重啓工程。
1)配置方式:進入%Tomcat%/bin目錄,找到並編輯配置檔案 catalina,
Windows 修改 catalina.bat 檔案,增加配置:
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxDirectMemorySize=2g
表示 MaxDirectMemorySize = 2GB,如下图所示:
配置完成後重啓工程,在%Tomcat%/logs 下查看 catalina.log 日誌,說明配置生效,如下圖所示:
Linux/Unix 修改 catalina.sh 檔案,增加配置:
JAVA_OPTS="$JAVA_OPTS -XX:MaxDirectMemorySize=2g"
2)配置完成後重啓工程。
3)查看進程,檢查參數是否配置成功,若如下所示進程資訊中出現參數相關資訊,則表示配置成功:
修改 startWebLogic 檔案
修改 Weblogic 安裝目錄%Weblogic%/domains/使用者工程名/下的 startWebLogic 檔案,增加一條配置
在 3.3.1 節已有的配置參數(startWebLogic.bat 檔案 )set MEM_ARGS= -Xms4096m–Xmx8192m -XX:PerBytecodeRecompilationCutoff=-1 -XX:PerMethodRecompilationCutoff=-1後在增加一條參數:
-XX:MaxDirectMemorySize=2g #表示 MaxDirectMemorySize = 2GB
在 3.3.1 節已有的配置參數(startWebLogic.sh 檔案 )MEM_ARGS=" -Xms4096m -Xmx8192m -XX:PerBytecodeRecompilationCutoff=-1 -XX:PerMethodRecompilationCutoff=-1"的引號內增加一條參數:
注:若已經配置過 Xmx 等參數,可直接在 3.3 節配置參數中增加-XX:MaxDirectMemorySize=2g即可。
如下圖所示:
存取 Websphere 控制檯,進入 JAVA 虛擬機配置介面,同本文 3.3.1 節,在輸入框中新增 JVM 參數:
-MaxDirectMemorySize=2096
修改 Websphere 安裝目錄下的配置檔案 server.xml ,在其中新增 JVM 參數:
MaxDirectMemorySize="2096"
建議開啓,該參數只需在使用 Linux 下環境修改。
1)在%FineBI%/bin目錄下的 FineBI.vmoptions 檔案中增加如下參數即可
-Djava.awt.headless=true
3)輸入 ps -ef|grep tomcat 查看進程,檢查參數是否配置成功,若如下所示進程資訊中出現參數相關資訊,則表示配置成功:
1)配置方式:進入%Tomcat%/bin目錄,找到並編輯配置 catalina.sh 檔案,增加如下參數:
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
在 startWebLogic 檔案中增加相應 JVM 參數配置即可。
修改 startWebLogic.sh 檔案,增加-Djava.awt.headless=true 配置,如下所示:
JAVA_OPT="${JAVA_OPT} -Djava.awt.headless=true"
方法一:控制檯編輯(推薦)
方法二:修改配置檔案
Djava.awt.headless="true"
建議僅使用預設 Parallel Scavenge 收集器。
若使用了 CMS(-XX:+UseConcMarkSweepGC) /G1(-XX:+UseG1GC) 收集器,該收集器的 Full GC 是單執行緒的,可能會導致系統長時間無響應,如非必要,建議去掉「 UseConcMarkSweepGC / UseG1GC 」參數,即可使用預設 Parallel Scavenge 收集器。
可以透過以下方法查看當前使用的垃圾收集器:
win+R 進入cmd,命令如下所示:
java -XX:+PrintCommandLineFlags -version
如下图所示:
輸入以下命令
max_map_count 檔案包含限制一個進程可以擁有的 VMA(虛擬記憶體區域)的數量。虛擬記憶體區域是一個連續的虛擬位址空間區域。在進程的生命週期中,每當過程嘗試在記憶體中映射檔案,連結到共享記憶體段,或者分配堆空間的時候,這些區域將被建立。
調優這個值將限制進程可擁有 VMA 的數量。限制一個進程擁有 VMA 的總數可能導致應用過程出錯,因為當進程達到了 VMA 上線但又只能釋放少量的記憶體給其他的核心進程使用時,工件系統會丟擲記憶體不足的錯誤。
建議調整 vm.max_map_count 參數的值為 262144 ,以免 VMA 數量到了預設上限,導致 JVM 進程當機。
sysctl -a|grep vm.max_map_count
sysctl -w vm.max_map_count=262144sysctl -a|grep vm.max_map_count
編輯 sysctl.conf 檔案,新增 vm.max_map_count=262144 後儲存,使用sysctl -p使參數生效。
vim /etc/sysctl.conf #編輯sysctl.conf檔案vm.max_map_count=262144 #新增代碼sysctl -p #使參數生效