应用服务器调优
应用服务器通常要调的参数有JVM内存大小、处理线程数、数据库连接池连接数,另外再有就是关闭应用服务器多余的日志。
1.1 调整原则
最基本的调整原则:不是把所有你所知道的调优参数都配置上去系统就能达到最优。如果你没有完全把握某个调优参数的作用,那么建议使用默认配置。
下面说明各应用服务器中最常用的几个调优参数的调整原则:
1、JVM内存
ü 32位JDK最大内存不能配置超过2.1G内存
ü 某些情况下,一台机器上可能需要多个服务程序,那么此时需要注意合理分配JVM内存。JVM的最大内存不应超过在应用服务器启动之前,操作系统可用内存的70%
ü 对于JVM的最小、最大内存值,不同的JVM有不同的推荐值,这主要是由JVM的GC机制决定的。
比如IBM的JVM建议最小内存配置小一些(比如128m),有助于减少内存碎片;而Sun的JVM建议最小最大值配置成一样,因为它不存在碎片问题。
在这里我们建议最小最大内存还是不要配置成一样,方便从内存的扩充过程(内存值从最小扩充到最大的过程)判断可能的内存泄漏现象。
2、处理线程数
ü 一个CPU可分配15-25个线程,如果CPU处理能力好,可以分配更多
ü CPU空闲的情况下,如果出现线程全部占满,则调高线程数量
3、数据库连接池连接数
ü 最大连接数应小于应用服务器线程数目
ü 所有服务器上配置的连接总数不能超过数据库总的连接数限制
1.2 Tomcat 5.0.28配置
这里所说的Tomcat 5.0.28是指EOS安装包自带的版本。
1.2.1 JVM内存
在EOS安装目录下找到启动服务器脚本文件,Windows下为startTomcat.bat,类unix系统为startTomcat.sh。
Windows环境下:
以文本方式打开脚本文件startTomcat.bat,找到如下命令行:
set JAVA_OPTS=-Xms128m -Xmx256m
请参照5.1章节调整原则配置JVM内存大小。
1.2.2 处理线程数
在EOS安装目录下找到JBoss中tomcat的server.xml配置文件:
jakarta-tomcat-5.0.28\conf\server.xml
找到如下的配置:
<Service name="Catalina"> <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/> |
ü maxThreads:可创建的最小的线程数。请参照5.1章节调整原则配置线程数。
ü acceptCount:当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
ü minSpareThreads:初始化时创建的线程数
ü maxSpareThreads:当创建的线程超过此值,则关闭不再需要的socket线程
1.2.3 数据库连接池大小
Tomcat 5.0.28本身没有带数据库连接池的功能,EOS5.3引用第三方工具Tyrex来实现连接池。
连接池连接数最小为5个,最大50个。注意,此配置不可更改。
1.3 JBoss3.2.5配置
这里所说的JBoss3.2.5是指EOS安装包自带的版本。
1.3.1 JVM内存
在EOS安装目录下找到启动服务器脚本文件,Windows下为run.bat,类unix系统为run.sh。
Windows环境下:
以文本方式打开脚本文件run.bat,找到如下命令行:
rem set JAVA_OPTS=%JAVA_OPTS% -Xms128m –Xmx512m
命令行前面的rem是将命令行注销了,去掉rem使之生效。再修改内存大小:
set JAVA_OPTS=%JAVA_OPTS% -Xms512m –Xmx1024m
请参照5.1章节调整原则配置JVM内存大小。
类Unix环境下:
以文本方式打开脚本文件run.sh,找到如下命令行:
"$JAVA" $JAVA_OPTS \ -classpath "$JBOSS_CLASSPATH" \ -DEOS_HOME="$EOS_HOME" \ -Djboss.home.url="file://$JBOSS_HOME" \ -Djboss.home.dir="$JBOSS_HOME" \ -DEOSCipherProvider=SunJCE \ org.jboss.Main "$@" |
增加两行配置内存大小:
"$JAVA" $JAVA_OPTS \ -classpath "$JBOSS_CLASSPATH" \ -DEOS_HOME="$EOS_HOME" \ -Xms512m \ -Xmx1024m \ -Djboss.home.url="file://$JBOSS_HOME" \ -Djboss.home.dir="$JBOSS_HOME" \ -DEOSCipherProvider=SunJCE \ org.jboss.Main "$@" |
请参照5.1章节调整原则配置JVM内存大小。
1.3.2 处理线程数
在EOS安装目录下找到JBoss中tomcat的server.xml配置文件:
jboss-3.2.5\server\default\deploy\jbossweb-tomcat50.sar\server.xml
找到如下的配置:
<Service name="jboss.web" className="org.jboss.web.tomcat.tc5.StandardService"> <!-- A HTTP/1.1 Connector on port 8080 --> <Connector port="8080" address="${jboss.bind.address}" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/> |
ü maxThreads:可创建的最小的线程数。请参照5.1章节调整原则配置线程数。
ü acceptCount:当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
ü minSpareThreads:初始化时创建的线程数
ü maxSpareThreads:当创建的线程超过此值,则关闭不再需要的socket线程
1.3.3 数据库连接池大小
在EOS安装目录下找到数据源配置文件server.xml:
jboss-3.2.5\server\default\deploy\eos4jboss\ProductDataSource-ds.xml
找到如下的配置:
<min-pool-size>25</min-pool-size> <max-pool-size>100</max-pool-size> |
ü min-pool-size:可创建的最小的连接数
ü max-pool-size:可创建的最大的连接数。请参照5.1章节调整原则配置大小。
其它可配置的参数:
<blocking-timeout-millis>5000</blocking-timeout-millis> <idle-timeout-minutes>5</idle-timeout-minutes> <check-valid-connection-sql>select 1 from eosejbregister</check-valid-connection-sql> |
ü blocking-timeout-millis:抛出异常前最大的等待连接时间,单位为毫秒
ü idle-timeout-minutes:关闭连接前连接空闲的最大时间,单位为分钟
ü check-valid-connection-sql:在从连接池里获得一个连接之前先通过执行一个简单的SQL来校验connection的有效性,通过此配置可实现在数据库连接断掉后自动重连
1.3.4 其它常用配置
1.3.4.1 配置事务超时时间
在EOS安装目录下配置文件:
jboss-3.2.5\server\default\conf\jboss-service.xml
找到如下的配置:
<mbean code="org.jboss.tm.TransactionManagerService" name="jboss:service=TransactionManager" xmbean-dd="resource:xmdesc/TransactionManagerService-xmbean.xml"> <attribute name="TransactionTimeout">300</attribute> <depends optional-attribute-name="XidFactory">jboss:service=XidFactory</depends> </mbean> |
ü TransactionTimeout:事务超时时间,单位秒
1.3.4.2 减少JBoss控制台打印信息
在EOS安装目录下找到日志配置文件log4j.xml:
jboss-3.2.5\server\default\conf\log4j.xml
找到如下的配置:
<logger additivity="false" name="STDOUT"> <level value="ERROR"/> <appender-ref ref="CONSOLE"/> </logger> |
此配置将控制台输出信息调为ERROR级别,减少控制台上的输出信息。
1.3.4.3 减少JBoss日志输出
在EOS安装目录下找到日志配置文件log4j.xml:
jboss-3.2.5\server\default\conf\log4j.xml
找到如下的配置:
添加此行 <level value="ERROR"/> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE"/> </root> |
添加如上蓝色标识的一行配置。此配置将JBoss控制台日志调为ERROR级别,写到jboss-3.2.5\server\default\log\server.log的日志就会减少。
- 上一篇:信息系统项目管理师论文的格式与写作技巧[ 02-03 ]
- 下一篇:协同平台全新上线[ 08-31 ]