一. 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数据库连接池优化
修改数据库连接池:
五. 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里面修改成:
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数据库连接池优化
修改数据库连接池:
五. 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文件,根据说明,去掉注释。
STEP 2:
与jboss-web.xml同级目录下还有一个文件web.xml,找到其中的节点,根据说明,取消注释。
role JBossAdmin to access the HTML JMX console web application
STEP 3:
在第一步中的jmx-console安全域和第二步中的运行角色JBossAdmin都是在login-config.xml中配置,我们在%
文件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文件,根据说明,去掉注释。
STEP 2:
与jboss-web.xml同级目录下还有一个文件web.xml,找到其中的节点,根据说明,取消注释。
role JBossAdmin to access the HTML JMX console web application
STEP 3:
在本目录的classes文件夹下找到web-console-users.properties和web-console-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,并找到
为其追加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
等