1. 概述
FineReport 报表工程部署到其他应用服务器上时,对应用服务器有一定的配置要求,因此当应用服务器不能满足报表工程使用时,会出现宕机风险。
FineReport 在部署后需要修改使用内存和其他参数,确保服务器稳定运行。
2. 修改堆内内存
请参见下方表格内容:
参数介绍 | 服务器类型 | 参考文档 |
---|---|---|
-Xmx 参数:最大堆内内存 -Xms 参数:初始化内存大小 注1:Xmx/Xms 与数字之间不要有空格 注2:建议配置Xms=Xmx,以防止内存扩容失败情况 | Tomcat 服务器 | Tomcat 服务器内存修改 |
WebLogic 服务器 | WebLogic 服务器内存修改 | |
WebSphere 服务器 | WebSphere 服务器 | |
JBoss 服务器 | JBoss 服务器 | |
Resin 服务器 | Resin 服务器内存修改 |
堆内内存配置推荐:
物理机 | JVM | 版本 | 推荐 |
---|---|---|---|
32G内存、报表独占 | 16G | 10.0.5之后 | -Xms16g -Xmx16g |
10.0.5之前 | -Xms16g -Xmx16g | ||
24G | 10.0.5之后 | -Xms24g -Xmx24g | |
10.0.5之前 | -Xms24g -Xmx24g | ||
16G内存、报表独占 | 8G | 10.0.5之后 | -Xms8g -Xmx8g |
10.0.5之前 | -Xms8g -Xmx8g |
3. 设置单线程使用栈空间
建议单线程使用栈空间不超过 512KB,即 -Xss 的值不超过 512 。本节展示 Tomcat 环境下设置 -Xss 的步骤。
Windows 系统:
1)进入%Tomcat%/bin目录,找到并编辑配置文件catalina.bat,在已有的配置参数set JAVA_OPTS= -Xms512M -Xmx1024M后再增加一条参数:
-Xss512K
如下图所示:
2)修改后,重启工程。在%Tomcat%/logs下查看catalina.log文件,说明配置生效,如下图所示:
Linux 系统:
1)进入%Tomcat%/bin目录,找到并编辑配置文件catalina.sh,在已有的配置参数JAVA_OPTS="$JAVA_OPTS -Xms2048M -Xmx8196M"语句中再增加一条参数:
-Xss512K
2)修改后,重启工程。输入ps -ef|grep tomcat(语句中的 tomcat 根据实际情况修改)查看进程,检查参数是否配置成功,若如下所示进程信息中出现参数相关信息,则表示配置成功:
4. 设置堆内老年代与新生代大小比例
堆内老年代与新生代大小比例建议为 2(-XX:NewRatio=2,JVM的默认值);NewRatio 大小正常生效需要用户不限制新生代大小。
在设置-Xmx、-Xms参数的位置,添加 NewRatio 的值即可,本节展示 Tomcat 环境下设置 NewRatio 的步骤。
Windows 系统:
1)进入%Tomcat%/bin目录,找到并编辑配置文件catalina.bat,在已有的配置参数set JAVA_OPTS= -Xms512M -Xmx1024M -Xss512K后再增加一条参数:
-XX:NewRatio=2
如下图所示:
2)修改后,重启工程。在%Tomcat%/logs下查看catalina.log文件,说明配置生效,如下图所示:
Linux 系统:
1)进入%Tomcat%/bin目录,找到并编辑配置文件catalina.sh,在已有的配置参数JAVA_OPTS="$JAVA_OPTS -Xms2048M -Xmx8196M -Xss512K"语句中再增加一条参数:
-XX:NewRatio=2
2)修改后,重启工程。输入ps -ef|grep tomcat(语句中的 tomcat 根据实际情况修改)查看进程,检查参数是否配置成功,若如下所示进程信息中出现参数相关信息,则表示配置成功:
5. 修改 MaxDirectMemorySize 参数
堆外内存由-XX:MaxDirectMemorySize这个参数来设置,建议参数值为 2GB 。
5.1 直接部署修改参数
1)如果是安装包直接安装 FineReport ,可以直接在%FR_HOME%/bin目录下的designer.vmoptions文件中修改。Windows 以及 Linux/Unix 系统均修改该文件(这里是以 M 为单位),如下图所示:
增加参数如下图所示:
-XX:MaxDirectMemorySize=2g
2)配置完成后重启工程。
5.2 部署在 Tomcat 中修改参数
Windows 系统:
1)配置方式:进入%Tomcat%/bin目录,找到并编辑配置文件catalina.bat,增加配置:
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxDirectMemorySize=2g
表示 MaxDirectMemorySize = 2GB,如下图所示:
2)修改后,重启工程。在%Tomcat%/logs下查看catalina.log文件,说明配置生效,如下图所示:
Linux 系统:
1)Linux/Unix 修改 catalina.sh 文件,增加配置:
JAVA_OPTS="$JAVA_OPTS -XX:MaxDirectMemorySize=2g"
2)配置完成后重启工程。输入ps -ef|grep tomcat(语句中的 tomcat 根据实际情况修改)查看进程,检查参数是否配置成功,若如下所示进程信息中出现参数相关信息,则表示配置成功:
5.3 部署在 Weblogic 中修改参数
修改 Weblogic 安装目录%Weblogic%/domains/用户工程名/下的 startWebLogic 文件,增加一条配置。
Windows 系统:
1)Windows 在startWebLogic.bat文件中新增配置:
set MEM_ARGS=-XX:MaxDirectMemorySize=2g #表示 MaxDirectMemorySize = 2GB
2)配置完成后重启工程。
Linux 系统:
1)Linux 在startWebLogic.sh文件中新增配置:
MEM_ARGS="-XX:MaxDirectMemorySize=2g" #表示 MaxDirectMemorySize = 2GB
如下图所示:
2)配置完成后重启工程。
5.4 部署在 Websphere 中修改参数
5.4.1 方法一:控制台编辑(推荐)
访问 Websphere 控制台,进入 JAVA 虚拟机配置界面,同本文 3.3.1 节,在输入框中新增 JVM 参数:
-MaxDirectMemorySize=2096
如下图所示:
5.4.2 方法二:修改配置文件
修改 Websphere 安装目录下的配置文件 server.xml ,在其中新增 JVM 参数:
MaxDirectMemorySize="2096"
如下图所示:
配置完成后重启工程。
6. 修改fineIO内存
10.0.5 版本启用了 fineIO 来配置堆外内存,堆外内存的配置更具体,客户可根据自己的需要灵活配置
堆外内存被分为读内存与写内存,以及缓存(不占用实际堆外内存),可以通过参数分别配置:
读内存:-Dfineio.read_mem_limit
写内存:-Dfineio.write_mem_limit
缓存: -Dfineio.cache_mem_limit
修改参数的方法见文档 系统检查扩展内容 的 2.4 和 2.5 节。
示例:
-Dfineio.read_mem_limit=2
-Dfineio.write_mem_limit=1
-Dfineio.cache_mem_limit=1
注1:默认单位为 GB,支持小数,但不支持使用g,m等。
注2:建议读内存为写内存的 2~3 倍,缓存大小建议与写内存大小一致。(如果未配置,默认为读内存2G,写内存1G,缓存1G)
注3:缓存内存大小不占堆外内存空间! 最大堆外内存大小为3GB!
注4:配置堆外内存时,不管版本,FineIO 和 -XX:MaxDirectMemorySize 要同时配置!只限制一部分依然可能导致宕机!
配置推荐:
物理机 | JVM | 版本 | fineIO |
---|---|---|---|
32G内存、报表独占 | 16G | 10.0.5之后 | -XX:MaxDirectMemorySize=1g -Dfineio.read_mem_limit=2 -Dfineio.write_mem_limit=1 -Dfineio.cache_mem_limit=1 |
10.0.5之前 | -XX:MaxDirectMemorySize=1g -Dfineio.direct_mem_limit=1 | ||
24G | 10.0.5之后 | -XX:MaxDirectMemorySize=1g -Dfineio.read_mem_limit=2 -Dfineio.write_mem_limit=1 -Dfineio.cache_mem_limit=1 | |
10.0.5之前 | -XX:MaxDirectMemorySize=1g -Dfineio.direct_mem_limit=1 | ||
16G内存、报表独占 | 8G | 10.0.5之后 | -XX:MaxDirectMemorySize=1g -Dfineio.read_mem_limit=2 -Dfineio.write_mem_limit=1 -Dfineio.cache_mem_limit=1 |
10.0.5之前 | -XX:MaxDirectMemorySize=1g -Dfineio.direct_mem_limit=1 |
7. 垃圾收集器
建议使用默认的 Parallel Scavenge 收集器(并行收集器)。
7.1 查看当前使用的垃圾收集器
注:若使用本节语句,查询结果包含若 -XX:+UseParallelGC ,则忽略本文 6.2 节内容。
7.1.1 Windows 系统下查看
win+R 进入cmd,命令如下所示:
java -XX:+PrintCommandLineFlags -version
如下图所示:
7.1.2 Linux 系统下查看
输入以下命令:
java -XX:+PrintCommandLineFlags -version
如下图所示:
7.2 设置垃圾收集器
工程部署在 Tomcat 上时, 可参考本节方法设置垃圾收集器为Parallel Scavenge(并行收集器)。
Windows 系统:
1)进入%Tomcat%/bin目录,找到并编辑配置文件 catalina.bat ,配置:
set JAVA_OPTS= -XX:+UseParallelGC
如下图所示:
2)修改后,重启工程。参考 6.1 节内容查看当前使用的垃圾收集器。
Linux 系统:
1)进入%Tomcat%/bin目录,找到并编辑配置文件 catalina.sh,配置:
JAVA_OPTS="$JAVA_OPTS -XX:+UseParallelGC"
2)修改后,重启工程。参考 6.1 节内容查看当前使用的垃圾收集器。
8. 注意事项
1)建议工程所在磁盘剩余空间不小于 5G 。
2)建议物理机总内存减去系统所在容器使用内存不小于 10GB 。