页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。


目录

(本文档仅供参考)

说明

       在Smartbi配置时,需要为Smartbi配置一定的JVM参数。 比如Smartbi在运行过程中,需要占用一定JVM内存,若需要的JVM内存等分配不够,则容易产生内存溢出(outofmemory)等问题。
       JVM相关设置项的配置是通过应用服务器进行配置的。

JVM参数

      为Smartbi配置的JVM参数有哪些呢?可以通过下表查看。一般只涉及到设置 -Xms、-Xmx、-XX: PermSize、-XX: MaxPermSize、 -XX:+HeapDumpOnOutOfMemoryError五个参数。各参数详情如下:

参数名称

建议值

描述

-Xms

512m以上

初始化"堆"大小

-Xmx

16384m及以上
当JVM运行过程中出现java.lang.OutOfMemoryError: Heap space时,应当增大此值,或者使用集群配置减轻并发压力;
当提示JVM(XMX)设置超过服务器内存,应减少设置项的值。

"堆"最大允许大小,指定Java程序中允许使用的最大内存数

-Xloggc

可以在跟踪内存溢出时打开

生成JVM垃圾回收日志,打开这个选项可以跟踪服务器是否存在内存泄漏。IBM JDK(例如WebSphere)生成的文件需要2.2.6中提及的IBM分析工具

-XX:PermSize

64m或以上

JVM为永久生成对象,包括类、方法定义等(Permanate generation)的内存区大小


-XX:MaxPermSize

128m或以上
JDK1.7和以下版本,当JVM运行过程中出现java.lang.OutOfMemoryError: PermGen space时应当增大此值

-XX:+HeapDumpOnOutOfMemoryError

无需设置具体数值,但必须预留该参数

该参数必须添加,当发生内存溢出时,该参数用于存储堆信息,可以用来分析内存溢出的原因;
若部署时未进行添加,可参考方法"添加-XX:+HeapDumpOnOutOfMemoryError参数"

-Xss

一般不需要设置该参数,只有当递归层次过多时应该设置为128k或以上一般不需要设置该参数,只有当递归层次过多时应该设置为8192k或以上

为线程保留的堆栈大小

-Dfile.encoding

GBK或UTF-8

设置JVM运行时的默认字符集
在Unix环境下运行Smartbi时通常需要设置为GBK或UTF-8(操作系统必须预先安装该语言区域)才可以正常的显示中文

-Duser.timezone=Asia/Chongqing

一般不需要设置,但是当出现时间转换字符串后相差八小时等时,设置为Asia/Chongqing

设置JVM的默认时区
在某些服务器上时间转换为字符串输出(例如灵活分析中查询的数据)可能出现相差了八个小时,这是因为JVM无法正确的判断服务器的时区信息

-Djava.awt.headless=true

建议增加

启用headless模式

-XX:MaxMetaspaceSizeJDK1.8以上版本建议增加,推荐512m或1024m,如-XX:MaxMetaspaceSize=512mJDK1.8的元空间内存

 
当报错信息是 【outofmemory: permGen space】  时,需要增大-XX:MaxPermSize 的值
当报错信息是 【outofmemory: java heap space】 时,需要增大 -Xmx 的值

当报错信息是 【java.lang.OutOfMemoryError: Metaspace】 时,需要增大 -XX:MaxMetaspaceSize 的值
当报错信息是【JVM没有设置-XX:HeapDumpOnOutOfMemoryError,将导致系统宕机后无法跟踪解决】时,需要添加参数"-XX:+HeapDumpOnOutOfMemoryError"
当报错信息是【JVM(XMX)设置超出服务器内存:xxx,当前值为XXX。建议修改设置项的值】时,需要减少该设置项的值
当报错信息是【JVM么有配置headless参数】时,建议修改JVM参数配置,增加-Djava.awt.headless=true
 

配置JVM参数

       不同引用服务器、不同操作系统、甚至不同的应用服务器版本,配置JVM参数的文件、方式都可能不同,具体可以通过下面的内容进行学习。
       由于一般配置JVM参数只需要设置 -Xms -Xmx 和 -XX: MaxPermSize三个参数,有时候还包含 -XX:PermSize,因此以下内容只对基本的这几个设置项进行设置
 
       注意:此文档只是说明了如何去配置这几个参数,对于部署smartbi来说,在部署的时候对于JVM是有一些必要的参数要配置的。请参考:部署smartbi

       为了让用户使用系统更好,对于服务器内存配置建议16G以上。

Tomcat

一、Windows系统

      A.如果Tomcat应用服务器是使用Smartbi exe安装包进行安装的,那么这个Tomcat是smartbi自带的,是经过改造的。设置JVM参数的步骤如下:
         1.关闭应用服务器
         2.进入Tomcat\bin目录,使用编辑方式打开startup.cmd(可以使用notepad++、UltraEdit等编辑工具)
         3.在startup.cmd中最下端找到以下内容
       
         修改其中的-Xms ,-Xmx , -XX:MaxPermSize,添加-Djava.awt.headless=true,比如将Xms设置为512m,Xmx修改为 16348m, MaxPermSize修改为512m,在后面添加-Djava.awt.headless=true。修改后如下:
         
 
     B.如果Smartbi是使用war包部署的,也就是说Tomcat应用服务器是自行安装的,那么设置步骤如下:
        1.关闭应用服务器
        2.进入Tomcat\bin目录。在windows上tomcat是通过startup.bat进行启动的,启动时需要使用到tomcat的一些启动信息。可以用编辑方式打开startup.bat,找到set "EXECUTABLE 设置项,看看该设置项是指向哪个文件,一般是catalina.bat,那么tomcat的启动信息就是在catalina.bat中定义的。
       
       3.找到步骤2中所指向的文件,一般是catalina.bat。用编辑方式打开catalina.bat
         在catalina.bat中,一般前面会有一些注释,这些注释列出了此脚本中的一些设置项。其中JAVA_OPTS就是我们接下来即将进行设置的设置项。(如果没有JAVA_OPTS,而只有JAVA_OPTIONS,那么设置项就是JAVA_OPTIONS,下面的内容中的JAVA_OPTS都换成JAVA_OPTIONS)
        
 
       4.首先在catalina.bat中,搜索"JAVA_OPTS",检查一下该文件中是否已经对该设置项进行了设置。
       
 
        若文件中已经有对该设置项进行设置,检查一下设置项的内容中是否包含 -Xms ,-Xmx, -XX:PermSize 和 -XX: MaxPermSize。如果已经存在,则可以直接修改对应项的值。
如下:已存在
       


       对其直接修改值,比如设置-Xms为256m,-Xmx为10240m,-XX:MaxPermSize为1024m        注:为了让用户使用系统更好,对于服务器内存配置建议16G以上。)

       
 
       5.如果检查过整个catalina.bat,发现没有对相应的设置项有进行过设置。那么可以在catalina.bat中注释下方的第一行,添加如下设置(该行添加的位置不要求必须在这个位置)
         set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx16348m -XX:MaxPermSize=1024m
         如果是tomcat6.0以上,也可使用
         set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=GBK -Duser.region=CN -Duser.language=zh -Djava.awt.headless=true -Xms8192m -Xmx16348m -XX:MaxPermSize=512m
        


 
二、Linux系统

       Linux操作系统如果是Linux一键部署包部署的,修改JVM参数,只需要修改smartbi_env文件,具体可以参考文档(9.1JVM内存大小修改):https://wiki.smartbi.com.cn/pages/viewpage.action?pageId=65606021
       其他方式,比如手工部署的方式设置JVM参数步骤如下:

       1.关闭应用服务器

       2.进入Tomcat\bin目录

       在linux上tomcat是通过startup.sh进行启动的,启动时需要使用到tomcat的一些启动信息。可以用编辑方式打开startup.sh,找到 EXECUTABE 设置项,看看该设置项是指向哪个文件,一般是catalina.sh,那么tomcat的x相关启动信息就是在catalina.sh中定义的。
       

       3.找到步骤2中所指向的文件,一般是catalina.sh。用编辑方式打开catalina.sh

         在catalina.sh中,一般前面会有一些注释,这些注释列出了此脚本中的一些设置项。其中JAVA_OPTS就是我们接下来即将进行设置的设置项。(如果没有JAVA_OPTS,而只有      JAVA_OPTIONS,那么设置项就是JAVA_OPTIONS,下面的内容中的JAVA_OPTS都换成JAVA_OPTIONS)
      

      4.首先在catalina.sh中,搜索"JAVA_OPTS",检查一下该文件中是否已经对该设置项进行了设置。
      
 
      若文件中已经有对该设置项进行设置,检查一下设置项的内容中是否包含 -Xms ,-Xmx, -XX:PermSize 和 -XX: MaxPermSize。如果已经存在,则可以直接修改对应项的值,并检查是否有-Djava.awt.headless=true,如果没有的话,需要添加。
      
 
      5.如果检查过整个catalina.sh,发现没有对相应的设置项有进行过设置。那么可以在catalina.sh中注释下方的第一行,添加如下设置(该行添加的位置不要求必须在这个位置,但不能加在文本的末尾,否则是无效的)
 
       JAVA_OPTS="$JAVA_OPTS -Xms256m -Xmx16384m -XX:MaxPermSize=1024m -Djava.awt.headless=true" (注意有没有双引号)
     
      另外,Tomcat并不建议JVM参数配置在catalina.sh文件中,通常是配置在tomcat\bin\setenv.sh这个文件中。若是catalina.sh文件中没有,可以找一下这个文件

       注:这里有人会问需不需要配置JAVA_HOME,这个是tomcat自身运行需要的参数。如果电脑上有进行JAVA环境设置,这里不设置的话就是使用系统的JAVA环境变量;我们也可以自己通过配置JAVA_HOME指定Tomcat使用的jdk。总得来说,和JAVA_OPTS有一定的关联,但是不包含在配置JVM参数这一项中。
 

Webshpere

      Websphere中设置JVM参数可以在控制台中进行控制。(下面以Websphere8为例)

      1.在浏览器中输入websphere控制台地址,进入控制台界面。
      
 
      2.点击左侧的Servers -> Server Types -> WebSphere application servers。

       如果是中文版的控制台,点击左侧的 服务器 -> 应用程序服务器
       
 
      3.在右侧点击对应的server,如server1
      
 
       进入设置界面
     
 
      4.展开右下角的Server Infrastructure -> Java and Process Management,点击Process definition
      在中文版控制台界面中,展开右下角的 服务器基础结构  -> Java和进程管理 ,点击 进程定义
     
 
     进入进程定义界面
    
     5.在进程定义界面,点击右侧的 Java Virtual Machine
     在中文版控制台界面中,点击右侧的 Java 虚拟机
    
 
    进入JAVA虚拟机设置界面
    
 
    6.在JAVA虚拟机设置界面中,有三个设置项
    (1)Initial heap size,即JVM参数中的Xms,直接输入数值即可
    (2)Maximum heap size,即JVM参数中的Xmx,直接输入数值即可
    (3)Generic JVM arguments ,即JVM参数中的其他参数设置。在下方的输入框中输入 -XX:PermSize=256M  -XX:MaxPermSize=512m,如下:
     
 
      以上三个设置项在中文版控制台界面中对应的设置项分别是
   (1)初始堆大小
   (2)最大堆大小
   (3)通用JVM实参
 
     7.保存设置项,重启动应用即可。

Weblogic

一、Windows系统

      1.关闭应用服务器

      2.进入Weblogic目录下对应 domain的启动目录 ,一般是 <domain>/bin目录(注意:这里的<domain>在实际上应该是对应的domain名称)

      3.在Windows系统上,对应的配置项是在setDomainEnv.cmd中进行配置的。用编辑方式打开setDomainEnv.cmd

      4.在setDomainEv.cmd中依次搜索,找到Xms、Xmx、XX:PermSize、XX:MaxPermSize,然后修改其值
     
 


二、Linux系统

      1.关闭应用服务器

      2.进入Weblogic目录下对应 domain的启动目录,一般是 <domain>/bin目录(注意:这里的<domain>在实际上应该是对应的domain名称)

      3.在Windows系统上,对应的配置项是在setDomainEnv.sh中进行配置的。用编辑方式打开setDomainEnv.sh

      4在setDomainEv.sh中依次搜索,找到Xms、Xmx、XX:PermSize、XX:MaxPermSize,然后修改其值
     
 

Jboss

     1.关闭应用服务器;

     2.用编辑方式打开run.sh/cmd文件;

     3.在JAVA_OPTIONS变量中增加 -Xms8192m -Xmx16384m -XX:PermSize=256M  -XX:MaxPermSize=512m -Djava.awt.headless=true

     4.重启应用服务器。