JBOSS 部署与性能调优

1 Jboss简介

JBoss是全世界开发者共同努力的成果,一个基于J2EE的开放源代码的应用服务器。 因为JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用它,而不用支付费用。2006年,Jboss公司被Redhat公司收购。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3.0的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。

1.1 优点

1、JBoss是免费的,开放源代码J2EE的实现,通过LGPL许可证进行发布。但同时也有闭源的,开源和闭源流入流出的不是同一途径。
2、JBoss需要的内存和硬盘空间比较小。
3、安装便捷:解压后,只需配置一些环境变量即可。
4、JBoss支持”热部署”,部署BEAN时,只拷贝BEAN的JAR文件到部署路径下即可自动加载它;如果有改动,也会自动更新。
5、JBoss与Web服务器在同一个Java虚拟机中运行,Servlet调用EJB不经过网络,从而大大提高运行效率,提升安全性能。
6、用户可以直接实施J2EE-EAR,而不是以前分别实施EJB-JAR和Web-WAR,非常方便。
7、Jboss支持集群。

2 安装

2.1 下载及安装

1、首先,要安装JDK,配置JAVA_HOME环境变量。配置Path在“变量值”里最前面加入:%JAVA_HOME%/bin; 做完后,在命令窗口中运行java,javac有输出便可。
2、其次,将下载的JBoss解压,即完成安装。(解压目录最好不要有空格,否则运行容易出现异常)
下载地址: http://www.jboss.org/jbossas/downloads/
或登录公司ftp获取。
3、然后,配置JBOSS_HOME环境变量,值为JBoss的解压路径。
4、最后,可以运行%JBOSS_HOME%\bin\目录中的run.bat运行JBoss;地址栏输入http://localhost:8080/会进入JBoss的欢迎界面。
5、网上有的文章提到安装AOP,我们这里没有安装。

3 部署项目

3.1 jboss部署

跟tomcat一样,jboss也有一个部署目录,那就是jboss/server目录,其中有三个目录:all,default,minimal,代表了jboss提供的三种部署方式,all表示jboss提供的服务全部打开,default表示默认的jboss服务,minimal表示只打开最基本的。这里面可以增加自己的部署,我们只使用default。

进入default目录后,有以下几个目录:

conf:一些配置文件。
data:保存的数据,比如有状态会话bean。
deploy:部署目录,所有的应用都部署在这里面,相当于apache的htdocs。
lib:部署的应用程序需要使用到的其它库(jar)。
log:jboss的日志。
tmp:部署应用是产生的临时文件。
work:工作目录,所部署的应用(一些jar压缩文件)会被解压在这里。

要部署我们的应用,还需要做以下几步:

网上一些文章说还需要拷贝一些.xml配置文件,及JDBC驱动的.jar包。但实际实验中并不需要,只要部署的项目中jdbc配置正确即可。(理论上说应该是项目内外的都会加载,但实验中把项目外部的jdbc配置文件配好,项目内部的不配,结果是不行的)。

1、 把项目文件夹名改为ROOT.war (.war的才会被识别,使用ROOT浏览器访问时不用输项目名)。放到 \server\default\deploy 下。
2、 保证项目中jdbc链接正确。路径:\ROOT.war\WEB-INF\classes\jdbc.properties

4 配置及调优

4.1 配置

1、web服务端口号的修改

1相对路径:server\default\deploy\jboss-web.deployer\ server.xml 中

<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" />

将上面的8080端口修改为你想要的端口即可。

2、去掉和应用无关的部署,加快jboss运行速度。

路径:server\default\deploy下去掉和应用无关的部署,加快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
由于这次我们还关闭了管理端口jmx-console所以要去掉jmx-console.war 和management。
a、关闭jmx-console:
删除
jboss/server/default/deploy下目录jmx-console.war、management

注:

关于jmx-console 和web-console的安全配置这里暂不做说明,想了解的可参看本文最后列出的参考文档。

1、 去掉localhost:8080 出现的默认界面。

去掉server\default\deploy\jboss-web.deployer\ROOT.war
最后,重启,输入以下地址完成测试:
http://127.0.0.1/jmx-console
http://127.0.0.1/web-console
http://127.0.0.1/jbossindex.html
http://127.0.0.1/status

4.2 调优

4.2.1、调整JBOSS最大连接数.

配置deploy/jboss-web.deployer/server.xml文件 .

 <Connector
         port="8080"
         address="0.0.0.0"
         maxThreads="1600"
         minSpareThreads="100"
         maxSpareThreads="250"
         emptySessionPath="false"
         enableLookups="false"
         redirectPort="8443"
         acceptCount="800"
         connectionTimeout="20000"
         disableUploadTimeout="true"
         URIEncoding="UTF-8"
         />

maxThreads:表示最多同时处理的连接数。应该将线程数(最大线程数)设置比最大预期负载(同时并发的点击)多25%(经验规则)。
acceptCount:当同时连接的人数达到maxThreads时,还可以接收排队的连接。
minSpareThread:指“启动以后,总是保持该数量的线程空闲等待”;设置比预期负载多25%。
maxSpareThread:指“如果超过了minSpareThread,然后总是保持该数量的线程空闲等待”;设置比预期负载多25%。
  其中主要修改两个参数maxThreads和acceptCount值。增加maxThreads,减少acceptCount值有利缩短系统的响应时间。但是maxThreads和acceptCount的总和最高值不能超过6000,而且maxThreads过大会增加CPU和内存消耗,故低配置用户可通过降低maxThreads并同时增大acceptCount值来保证系统的稳定。

Jboss部署及性能调优

4.2.2、调整 jvm参数

路径:% JBOSS_HOME %\bin\run.bat

A:JVM启动参数共分为三类:
    其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;
    其二是非标准参数(-X),指的是JVM底层的一些配置参数,这些参数在一般开发中默认即可,不需要任何配置。但是在生产环境中,并不保证所有jvm实现都满足,所以为了提高性能,往往需要调整这些参数,以求系统达到最佳性能。另外这些参数不保证向后兼容,也即是说“如有变更,恕不在后续版本的JDK通知”(这是官网上的原话);
    其三是非Stable参数(-XX),这类参数在jvm中是不稳定的,不适合日常使用的,后续也是可能会在没有通知的情况下就直接取消了,需要慎重使用。
B:而JVM 内存又可分为三个主要的域 :
    新域、旧域以及永久域。JVM生成的所有新对象放在新域中。一旦对象经历了一定数量的垃圾收集循环后,便进入旧域。而在永久域中是用来存储JVM自己的反射对象的,如class和method对象,而且GC(Garbage Collection)不会在主程序运行期对永久域进行清理。其中新域和旧域属于堆,永久域是一个独立域并且不认为是堆的一部分。
C:各主要参数的作用如下 :
    -Xms:设置jvm内存的初始大小
    -Xmx:设置jvm内存的最大值
    -Xmn:设置新域的大小(这个似乎只对 jdk1.4来说是有效的,后来就废弃了)
    -Xss:设置每个线程的堆栈大小(也就是说,在相同物理内存下,减小这个值能生成更多的线程)
    -XX:NewRatio :设置新域与旧域之比,如-XX:NewRatio = 4就表示新域与旧域之比为1:4
    -XX:NewSize:设置新域的初始值
    -XX:MaxNewSize :设置新域的最大值
    -XX:PermSize:设置永久域的初始值
    -XX:MaxPermSize:设置永久域的最大值
    -XX:SurvivorRatio=n:设置新域中Eden区与两个Survivor区的比值。(Eden区主要是用来存放新生的对象,而两个 Survivor区则用来存放每次垃圾回收后存活下来的对象)
D:常见的错误 :
    java.lang.OutOfMemoryError相信很多开发人员都用到过,这个主要就是JVM参数没有配好引起的,但是这种错误又分两种:java.lang.OutOfMemoryError: Java heap space和java.lang.OutOfMemoryError: PermGen space,其中前者是有关堆内存的内存溢出,可以同过配置-Xms和-Xmx参数来设置,而后者是有关永久域的内存溢出,可以通过配置-XX:MaxPermSize来设置。

下面是个例子,请根据实际情况进行修改,修改run.conf文件中的如下内容:
JAVA_OPTS=”-Xms256m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=512m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -Djboss.platform.mbeanserver”

参考文档:
百度百科 http://baike.baidu.com/view/309533.htm
JBOSS性能优化 http://www.blogjava.net/Noah/articles/340440.html
JBoss的配置 http://developer.51cto.com/art/200906/130210.htm
      http://developer.51cto.com/art/200906/129945.htm
jboss安全配置 http://wenku.baidu.com/view/47664a03f12d2af90242e6a3.html

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值