JBoss性能调优

从以下几方面进行JBOSS的性能调优: 
(1)首先解决之前遇到的jboss无反(假死)应问题。该内容需要下次遇到时着手解决,现在的日志已经可以每日备份,计划用thread dump分析jboss假死问题. 
(2)JBOSS-JVM优化,内存参数设置. 
(3)分析JBOSS数据压缩功能,根据需要选用. 
(4)选用合适的日志输出等级和标准输出数据量大小. 
(5)考虑使用jboss-native,提高处理静态文件的处理速度. 
(6)数据库连接池优化. 
(7)关闭不需要的jboss服务. 

[1] jboss无反应或者CPU/mem usage very high 
we can use thread dump and jvm arguments to test the code. 
参见: 
http://binma85.iteye.com/blog/786349 
http://binma85.iteye.com/blog/819150 

[2]JBOSS-JVM 优化 
主要是对Jboss依赖的JVM参数进行优化设置 

引用

典型服务器配置有以下几种: 
-Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 
-XX:+UseParallelGC:选择垃圾收集器为并行收集器。此配置仅对年轻代有效。即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集。 
-XX:ParallelGCThreads=20:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相同 
-Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC 
-XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。 
-Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection 
XX:CMSFullGCsBeforeCompaction:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。 
-XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除碎 
摘自:http://wangtong40.iteye.com/blog/737235 



[3]分析JBOSS数据压缩功能,根据需要选用. 
当web容器需要大量的数据传输时,为减少数据传输时间,可以考虑启用数据压缩功能。类似css、js等数据是重点考虑对象。主要做法如下所示: 
打开server/default/deploy/jboss-web.deployer/server.xml 
找 到 protocol=”HTTP/1.1″的 Connector元素,添加属性 URIEncoding=”utf-8″ compression=”on” compressionMinSize=”2048″ noCompressionUserAgents=”gozilla, traviata” compressableMimeType=”text/html,text/xml,text/javascript, text/css, text/plain,application/xhtml+xml,application/x-javascript,application/javascript,text/xhtml” 

添加完后类似于: 

Xml代码  收藏代码

  1. <Connector port=”8080″ address=”${jboss.bind.address}”     

  2. maxThreads=”250″ maxHttpHeaderSize=”8192″  

  3. emptySessionPath=”true” protocol=”HTTP/1.1″  

  4. enableLookups=”false” redirectPort=”8443″ acceptCount=”100″  

  5. connectionTimeout=”20000″ disableUploadTimeout=”true” URIEncoding=”utf-8″ compression=”on” compressionMinSize=”2048″ noCompressionUserAgents=”gozilla, traviata” compressableMimeType=”text/html,text/xml,text/javascript, text/css, text/plain,application/xhtml+xml,application/x-javascript,application/javascript,text/xhtml”/>  



[4]选用合适的日志输出等级和标准输出数据量大小. 
打开server/default/conf/jboss-log4j.xml ,这是一个log4j的配置文件。log4j的详细配置说明请参看  http://logging.apache.org/log4j/1.2/index.html  。日志输出的太多,会导致服务器性能降低,所以减少不必要的日志输出。方法大体如下: 

找到 name=”org.jboss” 的category 元素,设置里面的priority元素为 <priority value=”INFO” /> 
建一个新的category,内容为 <category name=”javax.faces”><priority value=”INFO” /></category> 

log4j 还能够将不同的日志输入到不同的地方,为了以后维护方便,应该将不同 category的日志输入到不同的文件里。详细方法参看上面的网站里的说明。 

[5]考虑使用jboss-native,提高处理静态文件的处理速度. 
安装jbossNative 
    jboss的web container使用的 apache tomcat (http://www.apache.org)。 apache tomcat 有一个扩展包,使tomcat可以通过 java native interface 使用 apache portable runtime (APR),而APR则是大名顶顶的apache httpd 网络服务器的运行时环境。用了这个扩展之后,就使得tomcat可以借助于apache httpd的力量,性能得以提升,尤其是处理静态文件时效率更高。Jboss native,实际上就是tomcat的这个native的扩展,只不过被jboss又添进了一些为了和jboss更好协作而加进去的东西。 
要安装jboss native, 按以下步骤进行 

请到jboss的网站上下载,地址是 http://www.jboss.org/jbossweb/downloads/jboss-native/?action=a&windowstate=maximized, 依据服务器环境选择合适的版本。 目前我们用的版本是JBoss Native 2.0.4 Linux x86 。 
解压下载后的压缩包到某个目录,比如 jbossNative目录 
将jbossNative/bin/META-INF/bin/linux2/x86/openssl 复制到<jboss>/bin 
在<jboss>/bin目录里建一个文件夹,名为 native 
把jbossNative/bin/META-INF/lib/linux2/x86/ 目录下所有内容复制到上一步建好的<jboss>/bin/native目录下 

[6]数据库连接池优化. 
摘自http://wangtong40.iteye.com/blog/737235 
在JBOSS_HOME\Server\default\deploy目录下存在**-xa-ds.xml文件,用于JBOSS同数据库连接等配置,默认情况下**-xa-ds.xml文件中不包含关于数据库连接池等方面的配置信息,可以添加一下内容进行数据库连接池方面的设置: 

Xml代码  收藏代码

  1. <min-pool-size>100</min-pool-size>     

  2. <max-pool-size>500</max-pool-size>   



[7]关闭不需要的jboss服务. 
摘自http://wangtong40.iteye.com/blog/737235 
在JBOSS中提供许多通常不需要的服务和Jar包,比如JMX、Mail、AOP、Hibernate等,可以根据具体项目所涉及的技术,删减JBOSS内置应用,从而提高JBOSS中间件启动速度,减少占用系统资源。 

删减服务  
   在%JBOSS_HOME%/server/default/deploy中含有一些比如jboss-aop.deployer等目录和mail-service.xml等应用配置文件,如果不需要使用这些应用的话,可以将其一一删除,不过删除时要分外小心,避免应用系统无法启动。
下图为只包含数据库应用的一个已删减不需要服务后的deploy文件夹目录: 

删减Jar包 
   在%JBOSS_HOME%/server/default/lib中包含一些应用系统不需要的Jar包,这些包同样可以进行删除。


你可能感兴趣的:(jboss,性能调优)