`

jboss性能优化

阅读更多
linux jboss 部署时优化设置:

在/conf/web.xml中通过参数指定:
<session-config>    
    <session-timeout>1440</session-timeout>      
</session-config>  
单位为分钟。


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输出日志的等级
打开 <jboss>/server/default/conf/jboss-log4j.xml ,这是一个log4j的配置文件。log4j的详细配置说明请参看  http://logging.apache.org/log4j/1.2/index.html  。日志输出的太多,会导致服务器性能降低,所以减少不必要的日志输出。方法大体如下:

1.找到 name=”org.jboss” 的category 元素,设置里面的priority元素为 <priority value=”INFO” />
2.建一个新的category,内容为 <category name=”javax.faces”><priority value=”INFO” /></category>
log4j 还能够将不同的日志输入到不同的地方,为了以后维护方便,应该将不同 category的日志输入到不同的文件里。详细方法参看上面的网站里的说明。

起用jboss内的tomcat对传输数据的压缩功能
合同管理里用了大量的javascript css等,为了减少传输时间,可以起用压缩功能。方法是:
1.打开<jboss>/server/default/deploy/jboss-web.deployer/server.xml
2.找到 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”
添加完后类似于:
<Connector port=”8080″ address=”${jboss.bind.address}”  
maxThreads=”250″ maxHttpHeaderSize=”8192″
emptySessionPath=”true” protocol=”HTTP/1.1″
enableLookups=”false” redirectPort=”8443″ acceptCount=”100″
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”/>



生产实例

<Connector protocol="HTTP/1.1" port="8080" address="${0.0.0.0}"
               connectionTimeout="20000" redirectPort="8443"
              
                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"
        />



下面这段需调试好久。,

maxThreads="200"
               maxSparseThreads="40"
               minSparseThreads="20"
               acceptCount="10"



给jvm分配适当的内存,一般为服务器的3/4内存量,推荐至少使用4G内存。
JAVA_OPTS = "-Xms4096m -Xmx8192m -XX:+UseParallelGC -XX:+UseParallelOldGC .. . . "
-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

Jvm垃圾收集器包括三种:串行,并行,并发
串行:处理小型数据,jdk1.4之前默认使用
并行:1.5和1.5之后使用,处理

-XX:ParallelGCThreads=20:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相
-XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。
(并发收集器主要是保证系统的响应时间,减少垃圾收集时的停顿时间。适用于应用服务器、电信领域等。)
-XX:+UseConcMarkSweepGC 设置年老代为并发收集。测试中配置这个以后,-XX:NewRatio=4的配置失效了,原因不明。所以,此时年轻代大小最好用-Xmn设置。
-XX:CMSFullGCsBeforeCompaction= 由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。
-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。





修改Jboss的bin目录下的run.bat/run.sh,在其加一行:


Windows
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx256m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:MaxNewSize=256m -Dfile.encoding=GBK
echo "JAVA_OPTS="$JAVA_OPTS


Linux
JAVA_OPTS="$JAVA_OPTS -Xms128m -Xmx256m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:MaxNewSize=256m -Dfile.encoding=GBK"
echo "JAVA_OPTS="$JAVA_OPTS



生产实例



#add wyg 2011-07-25
#modify wyg 2011-07-27
JAVA_OPTS="$JAVA_OPTS -Xms1200m -Xmx1200m -XX:PermSize=600m -XX:MaxPermSize=600m -XX:NewSize=400M -XX:MaxNewSize=400M -XX:+UseTLAB -XX:TLABSize=128K"





32位的Windows操作系统,最大也就能分配到1.5G左右的内存。原因是jvm出于性能的考虑分配内存时必须分配连续的内存块,而在jvm启动以前往往有一些其它的应用程序将操作系统的内存分割开,所以就会在jvm启动时出现不能分配堆内存的错误。解决方法:
1、在32位的windows操作系统上启动多个jvm
2、换成64位操作系统







安全设置
1、jmx-console登录的用户名和密码设置
默认情况访问http://localhost:8080/jmx-console就可以浏览jboss的部署管理的一些信息,不需要输入用户名和密码,使用起来有点安全隐患。下面我们针对此问题对jboss进行配置,使得访问jmx-console也必须要知道用户名和密码才可进去访问。步骤如下:
(1)找到JBoss安装目录/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml文件,去掉<security-domain>java:/jaas/jmx-console</security-domain>的注释。修改后的该文件内容为:
(2)修改与(1)中的jboss-web.xml同级目录下的web.xml文件,查找到<security-constraint>节点,去掉它的注释
(3) 在第一步中的jmx-console安全域和第二步中的运行角色JBossAdmin都是在login-config.xml中配置,我们在JBoss安装目录/server/default/config下找到它。查找名字为:jmx-console的application-policy:
<application-policy name = "jmx-console">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag = "required">
<module-option name="usersProperties">props/jmx-console-users.properties</module-option>
<module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>
</login-module>
</authentication>
</application-policy>
在此处可以看出,登录的角色、用户等的信息分别在props目录下的jmx-console-roles.properties和jmx-console-users.properties文件中设置,分别打开这两个文件。
配置完成后读者可以通过访问:http://localhost:8088/jmx-console/,输入jmx-console-roles.properties文件中定义的用户名和密码,访问jmx-console的页面。

2、web-console登录的用户名和密码设置
默认情况下,用户访问JBoss的web-console时,不需要输入用户名和密码,为了安全起见,我们通过修改配置来为其加上用户名和密码。步骤如下:
(1)找到JBoss安装目录F:/JBoss/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml文件,去掉<security-domain>java:/jaas/web-console</security-domain>的注释
(2)修改与(1)中的jboss-web.xml同级目录下的web.xml文件,去掉<security-constraint>部分的注释
(3)打开JBoss安装目录在JBoss安装目录/server/default/config下的login-config.xml文件,搜索web-console,找到并修改成如下内容:
<application-policy name = "web-console">
    <authentication>
       <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag = "required">
           <module-option name="usersProperties">props/web-console-users.properties</module-option>
           <module-option name="rolesProperties">props/web-console-roles.properties</module-option>
       </login-module>
    </authentication>
</application-policy>
在文件中可以看到,设置登录web-console的用户名和角色等信息分别在login-config.xml文件所在目录下的web-console-users.properties和web-console-roles.properties文件中,但因为该目录下无这两个文件,我们在JBoss安装目录/server/default/conf/props目录下建立这两个文件,
文件内容可参考在“jmx-console登录的用户名和密码设置”中的两个相应的配置文件的内容。



禁止/打开文件目录列表
编辑F:/JBoss/server/default/deploy/jboss-web.deployer/conf/web.xml
禁止把listing设置为false,否则true

防止LOG文件无限制的扩大
在F:/JBoss/server/default/conf目录下打开jboss-log4j.xml文件,在下语句块下:
   <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="File" value="${jboss.server.log.dir}/server.log"/>
      <param name="Append" value="false"/>
增加以下语句:
<param name="MaxFileSize" value="10240KB"/>
<param name="MaxBackupIndex" value="1"/>
其中文件的最大值和备份的数量可以根据实际情况而改变









数据源



<max-pool-size>20</max-pool-size>
      <min-pool-size>5</min-pool-size>
      <idle-timeout-minutes>0</idle-timeout-minutes>







//增加jprofiler 启动参数(要jprofilter先启动才能启动jboss) 一般这个注释掉

修改 JBoss 的启动脚本,加入如下参数:
-agentlib:jprofilerti=port=8849 -Xbootclasspath/a:$JPROFILER_HOME/bin/agent.jar  $JAVA_OPTS





//增加jconsole启动参数

-Djava.rmi.server.hostname=192.168.19.126  -Dcom.sun.management.jmxremote.port=9899-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false  $JAVA_OPTS







jboss线程池



conf/jboss-service.xml

<attribute name="MaximumPoolSize">40</attribute>
      <!-- The max number of tasks before the queue is full -->
      <attribute name="MaximumQueueSize">1000</attribute>



Name:在pool中threads的名称
ThreadGroupName:Thread group的名称
KeepAliveTime:当threads空闲时,保持活动的最长时间(单位毫秒)
MaximumPoolSize:可以并发的thread的最大数目
MinimumPoolSize:可以并发的thread的最小数目
MaximumQueueSize:允许等待的request的最大数目
BlockingMode:等待队列满了以后的处理方式








编译jsp的配置 

一般情况下,jsp文件在第一次被调用时才会被编译,然后每这[被修改一次,就会重新编译。

这利于开发,但在生产环境下,变样的配置会引起问题

1。第一个调用jsp页面的人就要等待jsp页面被编译的时间,最好的选择是关闭页面的懒编译特征

2。每一次页面要求都会检查jsp文件是否被修改以决定是否重新编译,每次请求的检查更更新降低生产环境的性能

jsp文件的编译和运行是被 一个java servlet处理的,这个java servlet叫做jspServlet,在 ..../deployers/jbossweb.deployer/web.xml配置

<servlet>
      <servlet-name>jsp</servlet-name>

<init-param>
                           <description>development</description>
                          <param-name>development</param-name>
                          <param-value>false</param-value>
              </init-param>

<init-param>
                           <description>development</description>
                          <param-name>checkInterval</param-name>
                          <param-value>300</param-value>

<!--  5分钟  -->

              </init-param>

参数

development

  缺省值:true

  描述:是否使用开发模式,如果使用,那么modificationTestInterval参数将会被调用

checkInterval

  缺省值:0

  描述:如果development为false,checkInterval的值大于0,编译器起作用,checkInterval是重复编译的时间间隔,默认一为0

modificationTestInterval

缺省值:4

  描述:jsp页面在最后一次调用后重复检测的时间间隔,如果是0,那么每次调用后都检测,默认值是4



如果有很多的jsp页面需要预编译,可以购买内置编译器
分享到:
评论

相关推荐

    Jboss性能优化整合

    经过我反复收集资料及试验。 该资料对Jboss性能优化有很大的帮助。 谢谢。希望对您有用!

    jboss的性能优化

    昨天查了一天的资料,运气不错,收获不小,解决了一个老大难问题:JBoss内存紧张的问题。 这是一个困扰了我两年整的问题,就是从前年这个时候,用JBoss 3.2.1架站以来,始终是一个大问题。不大的站点,1G的内存都...

    JBoss 性能调优

    JBoss AS 5 Performance Tuning will teach you how to deliver fast applications on the JBoss Application Server and Apache Tomcat, giving you a decisive competitive advantage over your competitors. ...

    Jboss_JVM优化

    Jboss中间件下jvm参数调优配置 Jvm常见调优配置汇总

    jboss-native-2.0.6-windows-x86-ssl.zip

    用了这个扩展之后,就使得tomcat可以借助于apache httpd的力量,性能得以提升,尤其是处理静态文件时效率更高。Jboss native,实际上就是tomcat的这个native的扩展,只不过被jboss又添进了一些为了和jboss更好协作而...

    性能调优 海量并发 系统架构

    系统性能优化 数据库 Nginx+Squid负载均衡 配置好的集群 总共三十个文档"&gt;Apache+Tomcat+Session+Memcache 高性能群集搭建 J2EE性能调优 Jboss的优化配置 Memcached分布式缓存 Nginx+Tomcat 动静分离 Nginx+tomcat...

    2011Java新版面试题

    此面试题为本人最近搜集整理,为目前企业面试最会被考到的问题,包括:java基础、多线程、常见排序算法、23种设计模式、堆栈、tomcat和jboss性能优化、JDK新特性、SSH框架、SQL数据库、面向对象设计原则等一系列综合...

    Jboss的系统性能调优方法

    Jboss的系统性能调优方法.首先是jbossNativejboss的webcontainer使用的apachetomcat。apachetomcat有一个扩展包,使tomcat可以通过javanativeinterface使用apacheportableruntime(APR),而APR则是大名顶顶的apache...

    JBoss422集群配置指南(02)

    JBoss422集群配置指南,让初学者掌握企业级的系统性能优化策略

    JBoss422集群配置指南(01)

    JBoss422集群配置指南,让初学者了解企业级的系统性能优化策略

    学习性能测试线路图

    1 概览 1 1 2 2 基础知识 2 2.1 Loadrunner工具使用 2 ...3.7 Apache/jboss/weblogic/oracle性能优化 11 3.8 计算机性能评测研究方向 11 3.9 Mercucy performance center 12 4 性能测试书籍 13 5 测试网站

    JAVA性能瓶颈和漏洞检测

    利用JProbe先进的数据收集功能,可以实现自动化的性能信息采集,缩短应用开发和优化周期。 JProbe在简单易用的集成化套件中,为servlet、JSP和EJB应用代码提供了强大的Java性能分析、内存纠错、代码覆盖及线程分析...

    Java应用性能监控最佳实践

    针对复杂的java应用环境进行全方面的性能监控与管理,文章中引用了ca wily apm解决方案,阐述了如何利用外部工具帮助优化java应用系统的性能,确保用户使用体验,针对weblogic,websphere,jboss等主流java中间件...

    JAVA性能瓶颈和漏洞检测.JProbe.Suite.v7.0.part2

    利用JProbe先进的数据收集功能,可以实现自动化的性能信息采集,缩短应用开发和优化周期。 JProbe在简单易用的集成化套件中,为servlet、JSP和EJB应用代码提供了强大的Java性能分析、内存纠错、代码覆盖及线程分析...

    JAVA性能瓶颈和漏洞检测].JProbe.Suite.v7.0.part1

    利用JProbe先进的数据收集功能,可以实现自动化的性能信息采集,缩短应用开发和优化周期。 JProbe在简单易用的集成化套件中,为servlet、JSP和EJB应用代码提供了强大的Java性能分析、内存纠错、代码覆盖及线程分析...

    java_memcached-release_2.5.1

    这次主要的优化工作还是在三个方面:应用服务器(Apache,JBoss)配置,业务流程,Cache Client包(http://code.google.com/p/memcache-client-forjava/ )。这里把过去和这次优化对于Cache的使用作一个经验分享,...

    Module Framework Design 2008(模块化开发框架)

    B/S 免费开发工具,帮助企业快速设计应用系统,集成了日志、联接池、性能优化、权限控制、数据展现,常规模块功能(增加、删除、修改、查询、导出、排序)实现,采用JAVA语言编写,可以应用于JBoss,WebLogic,Tomcat ...

    网站架构技术

    应用服务器性能优化 分布式缓存 缓存的原理 合理使用缓存 频繁修改的数据 没有热点的访问 数据不一致和脏读 缓存可用性 缓存预热 缓存穿透 缓存架构 jboss cache为代表的...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    性能优化 分层优化 系统级别 中间件级别 JVM级别 代码级别 分段优化 前端 web应用 服务应用 资源池 数据库 大数据与nosql zookeeper hadoop hbase mongodb strom spark java语言 语言语法基础 ...

    JAVA 实现URL重写工具 UrlRewriter Java v2.0 RC1-urlrewriterjava

    众所周知,许多服务器都支持URL重写技术,如Apache和Jboss等,但这些服务器的配置过程较为复杂,且性能表现一般。幸运的是,现在有专门的开源框架可以简化URL重写的任务。本文将重点介绍UrlRewriter框架,该框架配置...

Global site tag (gtag.js) - Google Analytics