核心企业

CORE ENTERPRISE
当前位置:网站首页>软件开发 > 正文内容

应用服务器调优

 

应用服务器通常要调的参数有JVM内存大小、处理线程数、数据库连接池连接数,另外再有就是关闭应用服务器多余的日志。

1.1    调整原则

最基本的调整原则:不是把所有你所知道的调优参数都配置上去系统就能达到最优。如果你没有完全把握某个调优参数的作用,那么建议使用默认配置。

 

下面说明各应用服务器中最常用的几个调优参数的调整原则:

1、JVM内存

ü        32JDK最大内存不能配置超过2.1G内存

ü        某些情况下,一台机器上可能需要多个服务程序,那么此时需要注意合理分配JVM内存。JVM的最大内存不应超过在应用服务器启动之前,操作系统可用内存的70%

ü        对于JVM的最小、最大内存值,不同的JVM有不同的推荐值,这主要是由JVMGC机制决定的。

比如IBMJVM建议最小内存配置小一些(比如128m),有助于减少内存碎片;而SunJVM建议最小最大值配置成一样,因为它不存在碎片问题。

在这里我们建议最小最大内存还是不要配置成一样,方便从内存的扩充过程(内存值从最小扩充到最大的过程)判断可能的内存泄漏现象。

 

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安装目录下找到JBosstomcatserver.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使之生效。再修改内存大?。?/SPAN>

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 "$@"

增加两行配置内存大?。?/SPAN>

"$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安装目录下找到JBosstomcatserver.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

找到如下的配置:

添加此行

<root>

<level value="ERROR"/>

<appender-ref ref="CONSOLE"/>

<appender-ref ref="FILE"/>

</root>

添加如上蓝色标识的一行配置。此配置将JBoss控制台日志调为ERROR级别,写到jboss-3.2.5\server\default\log\server.log的日志就会减少。

 

新疆快3