Jboss 优化配置

一. Jboss后台启动:
添加后台修改命令:
vi run.sh
while true; do
  if [ "x$LAUNCH_JBOSS_IN_BACKGROUND" = "x" ]; then
  # Execute the JVM in the foreground
  nohup "$JAVA" $JAVA_OPTS \
  -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \
  -classpath "$JBOSS_CLASSPATH" \
  org.jboss.Main "$@"
  JBOSS_STATUS=$?
  else
  # Execute the JVM in the background
  "$JAVA" $JAVA_OPTS \
  -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \
  -classpath "$JBOSS_CLASSPATH" \
  org.jboss.Main "$@" &
  JBOSS_PID=$!
  # Trap common signals and relay them to the jboss process
  trap "kill -HUP $JBOSS_PID" HUP
  trap "kill -TERM $JBOSS_PID" INT
  trap "kill -QUIT $JBOSS_PID" QUIT
  trap "kill -PIPE $JBOSS_PID" PIPE
  trap "kill -TERM $JBOSS_PID" TERM
  # Wait until the background process exits
  WAIT_STATUS=0
  while [ "$WAIT_STATUS" -ne 127 ]; do
  JBOSS_STATUS=$WAIT_STATUS
  wait $JBOSS_PID 2>/dev/null
  WAIT_STATUS=$?
  done
  fi
  # If restart doesn't work, check you are running JBossAS 4.0.4+
  # http://jira.jboss.com/jira/browse/JBAS-2483
  # or the following if you're running Red Hat 7.0
  # http://developer.java.sun.com/developer/bugParade/bugs/4465334.html  
  if [ $JBOSS_STATUS -eq 10 ]; then
  echo "Restarting JBoss..."
  else
  exit $JBOSS_STATUS
  fi
done &
二. Jboss内存优化:
修改这个两参数,给jvm分配适当的内存,一般为服务器的3/4内存量,推荐至少使用4G内存。
另外添加两个参数 -XX:+UseParallelGC -XX:+UseParallelOldGC 这两个让服务并行回收内存空间。修改完成后,大致为 JAVA_OPTS = “-Xms4096m -Xmx8192m -XX:+UseParallelGC -XX:+UseParallelOldGC -Dsum……
三. Jboss日志输出模式
[root@190MEM conf]# pwd
/usr/local/jboss/server/default/conf
[root@190MEM conf]# vi jboss-log4j.xml
 
 
 
 
 
四. Jboss数据库连接池优化
修改数据库连接池:

 
  training_master_db jdbc:mysql://211.100.192.128:3306/dts?useUnicode=true&characterEncoding=UTF-8
  com.mysql.jdbc.Driver
  root
 
  100
  500 org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
五. Jboss部署目录优化:
  去掉和应用无关的部署,加快jboss运行速度
bsh-deployer.xml 
client-deployer-service.xml  
ear-deployer.xml
ejb-deployer.xml 
http-invoker.sar 
jboss-bean.deployer 
jboss-ws4ee.sar
jms 
jsr88-service.xml  
schedule-manager-service.xml
scheduler-service.xml
sqlexception-service.xml
uuid-key-generator.sar
六. Jboss应用安全加固:
去掉:
Tomcat status (full) (XML) 
JMX Console 
JBoss Web Console
删除deploy下的jmx-console.war/ management/
[root@190MEM deploy]# pwd
/usr/local/jboss/server/default/deploy
[root@190MEM deploy]# ls jmx-console.war/ management/
jmx-console.war/:
checkJNDI.jsp displayMBeans.jsp images inspectMBean.jsp META-INF WEB-INF
cluster displayOpResult.jsp index.jsp jboss.css style_master.css

management/:
console-mgr.sar
[root@190MEM deploy]#
七. 备注:

 

 

优化jboss从几个方面入手,第一,配置路径端口,第二,给后台管理加权限控制。第三,jvm的优化配置。
第一, 项目一般都是用utf-8来配置传输参数。如果不配置的话,会默认为系统的编码
那么你首先的修改其编码“jboss-5.0.0.GA\server\default\deploy\jbossweb.sar”中server.xml里面修改成:
                    connectionTimeout="20000" redirectPort="8443"  URIEncoding="utf-8" />
port是你要修改外部的访问端口,默认是8080,你发布项目以后可能会改成80,加上URIEncoding=”UTf=8”是保证url传参数是utf-8传输的
    第二,给后台加上权限控制。http://localhost:8080/jmx-console/ 直接可以进入。
修改方法如下
1. default\deploy\jmx-console.war\WEB-INF 目录下的两个文件 web.xml 和 jboss-web.xml
web.xml中去掉注释
jobss-web.xml中去掉注释
   以上是开启了认证,默认帐户密码是admin/admin
2. 如果修改密码修改如下文件
   \server\default\conf\props  中的jmx-console-users.properties  中admin=admin 格式是用户名=密码,修改后面的admin就可以修改密码
三. JVM的优化。这一步也是至关重要的,首先来普及一下jvm的基础知识
  Jvm分为主要为两大块 ,一个是heap和 no heap ,。
Heap包括三个区域. Eden space ,survivor space ,tenured space.其中surivor space包括两个区,一个是from,一个是to区。下面描述个部分的职责:
Eden是负责新对象的创建区域。当新对象无法在eden区创建的时候,eden区会进行minor gc,会将一些失效的对象清除。会将清除下来的部分对象放到survivor space区域或者tenured space区域。当tenured space的对象越来越多的时候,达到jvm内存不足10%的时候,会进行一次full gc来释放对象。项目要尽可能少的full gc ,应为full gc比较占用内存,一般要求吞吐量比较大的时候,尽量的将new区域设置的比较大一点。也就是eden和survivor这个区域。
下面简要的说一下配置参数
在\bin目录下run.bat文件 用记事本打开 找到
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m -XX:MaxPermSize=256m
-Xms=128m这是heap初始化大小。32bit操作系统最大在1.5g-2g之间。64位的无限制
-Xmx=512m 这是heap最大的大小。尽量的将-Xms和-Xmx大小设置相同,这样避免内存重新分配影响性能
-Xss=128k 线程初始化大小,5.0之前默认是128k,之后为1m,线程机器最大为3000-5000
-XX:MaxPermSize=256m.这是表明持久类,也就是noheap区域的最大为256
-XX:PermSize=256m这个持久区域初始化为256m,一般持久类的大小是64m

这个配置是最常用的配置。如果需要考虑到吞吐量,那么new space和old space你就得重新分配一下
-XX:NewRatio=4
设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5
-XX:SurvivorRatio=4
设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6
-XX:MaxTenuringThreshold=0 
设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。 对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活 时间,增加在年轻代即被回收的概论
Jvm垃圾收集器包括三种:串行,并行,并发
串行:处理小型数据,jdk1.4之前默认使用
并行:1.5和1.5之后使用,处理

典型配置:
? java -Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20
-XX:+UseParallelGC:选择垃圾收集器为并行收集器。此配置仅对年轻代有效。即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集。
-XX:ParallelGCThreads=20:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相
? java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC
-XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。
? java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC  -XX:MaxGCPauseMillis=100
-XX:MaxGCPauseMillis=100:设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。
? java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC  -XX:MaxGCPauseMillis=100 -XX:+UseAdaptiveSizePolicy
-XX:+UseAdaptiveSizePolicy:设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开。
?  响应时间优先的并发收集器
如上文所述,并发收集器主要是保证系统的响应时间,减少垃圾收集时的停顿时间。适用于应用服务器、电信领域等。
典型配置:
? java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:+UseConcMarkSweepGC:设置年老代为并发收集。测试中配置这个以后,-XX:NewRatio=4的配置失效了,原因不明。所以,此时年轻代大小最好用-Xmn设置。
-XX:+UseParNewGC:设置年轻代为并行收集。可与CMS收集同时使用。JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值。
? java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。
-XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除碎片
常见配置汇总
1.     堆设置
o -Xms:初始堆大小
o -Xmx:最大堆大小
o -XX:NewSize=n:设置年轻代大小
o -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
o -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
o -XX:MaxPermSize=n:设置持久代大小
2. 收集器设置
o -XX:+UseSerialGC:设置串行收集器
o -XX:+UseParallelGC:设置并行收集器
o -XX:+UseParalledlOldGC:设置并行年老代收集器
o -XX:+UseConcMarkSweepGC:设置并发收集器
3. 垃圾回收统计信息
o -XX:+PrintGC
o -XX:+PrintGCDetails
o -XX:+PrintGCTimeStamps
o -Xloggc:filename
4. 并行收集器设置
o -XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
o -XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
o -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
5. 并发收集器设置
o -XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。
o -XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。

 

 

 

Jboss 安全和优化

一.        Jboss后台启动:
添加后台修改命令:
vi run.sh
while true; do
   if [ "x$LAUNCH_JBOSS_IN_BACKGROUND" = "x" ]; then
      # Execute the JVM in the foreground
     nohup  "$JAVA" $JAVA_OPTS \
         -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \
         -classpath "$JBOSS_CLASSPATH" \
         org.jboss.Main "$@"
      JBOSS_STATUS=$?
   else
      # Execute the JVM in the background
      "$JAVA" $JAVA_OPTS \
         -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \
         -classpath "$JBOSS_CLASSPATH" \
         org.jboss.Main "$@" &
      JBOSS_PID=$!
      # Trap common signals and relay them to the jboss process
      trap "kill -HUP  $JBOSS_PID" HUP
      trap "kill -TERM $JBOSS_PID" INT
      trap "kill -QUIT $JBOSS_PID" QUIT
      trap "kill -PIPE $JBOSS_PID" PIPE
      trap "kill -TERM $JBOSS_PID" TERM
      # Wait until the background process exits
      WAIT_STATUS=0
      while [ "$WAIT_STATUS" -ne 127 ]; do
         JBOSS_STATUS=$WAIT_STATUS
         wait $JBOSS_PID 2>/dev/null
         WAIT_STATUS=$?
      done
   fi
   # If restart doesn't work, check you are running JBossAS 4.0.4+
   #    http://jira.jboss.com/jira/browse/JBAS-2483
   # or the following if you're running Red Hat 7.0
   #    http://developer.java.sun.com/developer/bugParade/bugs/4465334.html   
   if [ $JBOSS_STATUS -eq 10 ]; then
      echo "Restarting JBoss..."
   else
      exit $JBOSS_STATUS
   fi
done &
二.        Jboss内存优化:
修改这个两参数,给jvm分配适当的内存,一般为服务器的3/4内存量,推荐至少使用4G内存。
另外添加两个参数 -XX:+UseParallelGC -XX:+UseParallelOldGC 这两个让服务并行回收内存空间。修改完成后,大致为 JAVA_OPTS = “-Xms4096m -Xmx8192m -XX:+UseParallelGC -XX:+UseParallelOldGC -Dsum……
三.        Jboss日志输出模式
[root@190MEM conf]# pwd
/usr/local/jboss/server/default/conf
[root@190MEM conf]# vi jboss-log4j.xml
   
      
      
      
      
四.        Jboss数据库连接池优化
修改数据库连接池:

  
    training_master_db    jdbc:mysql://211.100.192.128:3306/dts?useUnicode=true&characterEncoding=UTF-8
    com.mysql.jdbc.Driver
    root
   
        100
        500    org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
五.        Jboss部署目录优化:
     去掉和应用无关的部署,加快jboss运行速度
bsh-deployer.xml
client-deployer-service.xml  
ear-deployer.xml
ejb-deployer.xml
http-invoker.sar
jboss-bean.deployer
jboss-ws4ee.sar
jms
jsr88-service.xml   
schedule-manager-service.xml
scheduler-service.xml
sqlexception-service.xml
uuid-key-generator.sar
六.        Jboss应用安全加固:
去掉:
Tomcat status (full) (XML)
JMX Console
JBoss Web Console
删除deploy下的jmx-console.war/ management/
[root@190MEM deploy]# pwd
/usr/local/jboss/server/default/deploy
[root@190MEM deploy]# ls jmx-console.war/ management/
jmx-console.war/:
checkJNDI.jsp  displayMBeans.jsp    images     inspectMBean.jsp  META-INF          WEB-INF
cluster        displayOpResult.jsp  index.jsp  jboss.css         style_master.css
management/:
console-mgr.sar

 

一、 前言:
Jboss默认安装以后,会默认打开http://127.0.0.1,显示如下:
JBoss Online Resources
? JBoss 4.0 documentation
? JBoss Wiki
? JBoss forums
JBoss Management
? Tomcat status (full) (XML)
? JMX Console
? JBoss Web Console
Jmx Console和Jboss Web Console 里面可以修改和删除应用的参数,如果不加强安全设置,将会带来严重安全后果。
二、 关闭管理端口和相关统计信息:
1、 关闭jmx-console:
删除
/export/home/jboss-4.0.3SP1/server/default/deploy下目录jmx-console.war、management
2、 关闭web-console:
删除
/export/home/jboss-4.0.3SP1/server/default/deploy/jbossweb-tomcat55.sar下目录ROOT.war
3、 关闭status统计信息:
修改/export/home/jboss-4.0.3SP1/server/default/deploy/ROOT.war/WEB-INF/web.xml
屏蔽其中jboss的内容:粗体为添加屏蔽符号:
 
 
4、 删除jboss主页相目录和文件:
/export/home/jboss-4.0.3SP1/server/default/deploy/ROOT.war下:Manager/favicon.ico/jboss.css/jbossindex.html/logo.gif
lion:/export/home/jboss-4.0.3SP1/server/default/deploy/ROOT.war # rm -rf manager favicon.ico jboss.css jbossindex.html logo.gif
5、 备注:
三、 关闭完成测试:
1、 http://127.0.0.1/jmx-console
2、 http://127.0.0.1/web-console
3、 http://127.0.0.1/jbossindex.html
4、 http://127.0.0.1/status
5、 测试结果:
测试人 时间
服务器 jmx-console web-console status jbossindex.html 测试

 

 

 

jboss默认配置了以下服务:
?  JMX Console
?  JBoss Web Console
为了安全起见,需要用户通过授权进行访问。
一、JMX安全配置
STEP 1:
    找到%JBOSS_HOME%/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml文件,根据说明,去掉注释。

 


   
   java:/jaas/jmx-console   


STEP 2:
    与jboss-web.xml同级目录下还有一个文件web.xml,找到其中的节点,根据说明,取消注释。


   
        
       HtmlAdaptor   
       An example security config that only allows users with the    
         role JBossAdmin to access the HTML JMX console web application    
       
   
       /*   
       GET   
       POST   
     
   
        
       JBossAdmin   
     
   


STEP 3:
    在第一步中的jmx-console安全域和第二步中的运行角色JBossAdmin都是在login-config.xml中配置,我们在%


   
          
                       flag = "required">   
           props/jmx-console-users.properties   
           props/jmx-console-roles.properties   
             
       
   
    


文件props/jmx-console-users.properties定义了用户名、密码;props/jmx-console-roles.properties定义了用户所属角色
注:
jmx-console-users.properties 格式是:用户名=密码明文
jmx-console-roles.properties 格式是:用户名=角色1,角色2,角色3
二、WEB-CONSOLE的安全配置
STEP 1:
找到%JBOSS_HOME%/server/default/deploy/ management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml文件,根据说明,去掉注释。

 


   
   jboss.admin:service=PluginManager   

 


STEP 2:
与jboss-web.xml同级目录下还有一个文件web.xml,找到其中的节点,根据说明,取消注释。


   
      
   HtmlAdaptor   
   An example security config that only allows users with the    
   role JBossAdmin to access the HTML JMX console web application    
   
   
   /*   
   GET   
   POST   
   
   
      
   JBossAdmin   
   
   
   


STEP 3:
在本目录的classes文件夹下找到web-console-users.properties和web-console-roles.properties两个文件更名为:


   
          
                       flag = "required">   
             users.properties   
             roles.properties   
             
       
   


启动服务输入http://localhost:8080/
 然后分别点击JMX Console以及Jboss Web Console测试安全机制
user.properties和role.propertie并修改users.properties其中的用户名和密码修改%JBOSS_HOME%/server/default/conf/login-config.xml中web-console节点修改为以下:
到后自行修改或重新定义用户名、密码。JBOSS_HOME%/server/default/config下找到它。查找名字为:jmx-console的application-policy:

 


http://wiki.jboss.org/wiki/Wiki.jsp?page=SecureTheJmxConsole  
http://jira.jboss.com/jira/secure/attachment/12313981/index.html

http://wiki.jboss.org/wiki/Wiki.jsp?page=SecureTheJmxConsole  

http://jira.jboss.com/jira/secure/attachment/12313981/index.html

 

 

 

(转)JBoss, Tomcat等WEB服务器的优化策略
硬件优化
可以用双CPU,增大内存等方法,这里就不提了。
配置优化
我们可以通过修改JBoss的配置来加以优化。
1,修改Tomcat的JSP自动编译配置项:
    打开文件:deploy/jbossweb-tomcat50.sar/conf/web.xml,并找到
   
        jsp
        org.apache.jasper.servlet.JspServlet
       
            development
            false
       

为其追加development=false
告诉tomcat在用户访问时不必作JSP文件是否已被修改的检查。因为reloading默认为true, 一旦有JSP被修改了,Tomcat会自动启动back程序对被修改的jsp加以编译。如果 确认你的jsp不会做任何修改的话,可以把reloading设置为false。或则把checkInterval值调大点[默认为300秒检查一次]。
2,修改log输出配置:
  JBoss使用log4j来记录log。要修改log配置,找到conf/log4j.xml文件。
  修改方法:
  --------------------
 把log输出调到最高级别:ERROR
 对某些package,还可以自定义其输出的级别。因为比较简单,具体修改方法参考conf/log4j.xml里相关部分。
3,为你的JBoss廋身
 JBoss启动时,会加载很多服务(service),如果你确认不会用到这些服务,可以去掉它们。
1)邮件服务(mail-service)
   server/yourservername/deploy/mail-service.xml
   server/yourservername/lib/mail* (mail-plugin.jar, mail.jar)
   server/yourservername/lib/activation.jar (Java Activation Framework)
2)删除server/yourservername/deploy/下的以下目录或文件(没用到的情况下)
  http-invoker.sar
  jboss-aop.deployer
  jboss-hibernate.deployer
  jboss-ws4ee.sar
  jms

你可能感兴趣的:(Java)