APUSIC小结1
1 apusic.conf
把其中两个参数修改为:
MaxClients参数值设置的目的是防止拒绝服务攻击。当参数值设置较小时可以限制服务流量,起到防止
拒绝服务攻击的作用,但是当访问的用户较多时而此参数设置较小时却会影响性能。一般情况下,不考虑防
止拒绝服务攻击,此参数设置为-1,表示服务流量没有限制。
MaxWaitingClients:与MaxClients有类似的功能,他表示当许多并发用户访问时,可允许等待的最大客
户服务数。一般情况下,不考虑防止拒绝服务攻击,此参数设置为较大的数,如10000,如果设置较小,如50
,当等待响应的并发服务队列数超过50时,使得一些服务得不到响应,从而丢失一些响应结果。
datasources.xml
min-spare-connections:指连接池最小容量
max-spare-connections:指连接池最大容量
stmt-cache-size:指语句缓存容量
resultset-cache-size:指结果集缓存容量
resultset-cache-timeout:指结果集缓存超时配置如下:……
连接池最小容量:也就是初始连接数,此值不宜设置太小,太小须不断建立连接。也不宜设置太大,太
大消耗资源。
连接池最大容量:连接池中可容纳的最大连接数,当连接池中的连接数不够用时,需要等待其他的被使
用的连接得到释放,才能使用,否则只能等待。根据应用的实际情况设置此值。
语句缓存容量:对所执行的语句进行缓存,当再次执行此语句时,不必重新编译,从而提高了性能。根
据机器内存的大小适当设置此值。
结果集缓存容量:把所得到的结果集进行缓存,当再次使用此结果集时,不必再次从数据库中取得,而
可以直接从缓存中取得,从而提高性能。根据机器内存的大小适当设置此值。
结果集缓存超时:结果集过期时间,此时间不宜设置过长,以免浪费资源。
注:语句缓存容量、结果集缓存容量、结果集缓存超时参数主要针对Oracle数据库来设计的。
通过适当的调节Java虚拟机和Apusic的配置文件,可以显著的提升系统的性能。在一些具体的应用中,
还能够通过增加实例池、加大Cached、改变并发策略等方法来改善系统的整体性能。开发人员只要经过不断
的总结,就可以在Apusic应用服务器上开发出稳定而又高性能的企业应用。
2 apusic自启动
在启动Linux、Unix系统的时候,默认情况是需要手工的将apusic启动起来。尤其是系统管理员特别希望当
服务器宕机,重新启动后,能够让apusic服务器自动启动起来,而不需要手工去启动apusic。下面我简单介
绍一下如何在Linux下自动启动Apusic服务器。
我用Apusic-5.0在RedHat Enterprise 4.0 上制作自动启动Apusic服务器的详细步骤(其他版本的Linux操作
系统也应该是类似的):
1、提供了一个在linux操作系统上自动启动apusic服务器的脚本,名为apusic。该脚本的内容可以参照4,可
以根据情况修改该脚本中变量的值,如JAVA_HOME、APUSIC_HOME、端口等。
2、将该脚本拷贝到/etc/init.d/目录下,并设置其可以执行权限,如:chmod +x Apusic 。
3、将该脚本加入到系统服务中去
1) chkconfig --add Apusic //加入系统服务,并且服务名为:apusic。
2) chkconfig --list | grep Apusic //检查该脚本是否已经加入到系统服务中。
3) chkconfig --level 35 Apusic on //表示可以在文本模式、图形模式下自动启动apusic。
4、启动脚本的内容:
#!/bin/bash
#
# Apusic Startup script for the Apusic Application Server
#
# chkconfig: - 85 15
# description: Apusic 5.0 is a JavaEE5.0 standard Application Server Implemention
# processname: Apusic
# pidfile: /var/run/apusic.pid
# apusic_home: /usr/local/apusic-5.0
# Source function library.
. /etc/rc.d/init.d/functions
prog=Apusic-5.0
pidfile=${PIDFILE-/var/run/apusic.pid}
lockfile=${LOCKFILE-/var/lock/subsys/apusic}
JAVA_HOME=/usr/java/jdk1.5.0_07
APUSIC_HOME=/usr/local/apusic-5.0
startapusic="$APUSIC_HOME/domains/mydomain/bin/startapusic -p"
stopapusic="$APUSIC_HOME/domains/mydomain/bin/stopapusic admin admin iiop://localhost:6888"
start() {
echo -n $"Starting $prog: "
export $JAVA_HOME
cd $APUSIC_HOME
daemon $startapusic
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
export $JAVA_HOME
cd $APUSIC_HOME
daemon $stopapusic
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: $prog {start|stop|restart}"
exit 1
esac
exit $RETVAL
3 配置负载均衡
在conifg\loadbalancer.conf中,
<SERVICE VALUE="80"/>
<ATTRIBUTE NAME="BackendServers" VALUE="192.168.6.66:6888,192.168.6.67:6888"/>
<ATTRIBUTE NAME="MaxWaitingClients" VALUE="500"/>
<ATTRIBUTE NAME="WaitingClientTimeout" VALUE="5"/>
<ATTRIBUTE NAME="KeepAlive" VALUE="True"/>
<ATTRIBUTE NAME="MaxKeepAliveRequests" VALUE="100"/>
<ATTRIBUTE NAME="KeepAliveTimeout" VALUE="15"/>
<ATTRIBUTE NAME="MaxKeepAliveConnections" VALUE="300"/>
<ATTRIBUTE NAME="EnableLog" VALUE="False"/>
<ATTRIBUTE NAME="LogFileName" VALUE="logs/access.log"/>
<ATTRIBUTE NAME="LogFileLimit" VALUE="1000000"/>
<ATTRIBUTE NAME="LogFileCount" VALUE="10"/>
</SERVICE>
把后端均衡的机器放在BackendServers中,用逗号分割开
在配置文件中,最关键的属性BackendServers,定义了集群中的服务器,这是一个用逗号分割的地址列表,
包括主机名和端口号。
Apusic负载均衡器默认情况下是会话粘滞(session-sticky)的,同时采用轮循的策略选择可用节点。当然
也可以关闭会话粘滞,只要在LoadBalancer服务中,增加属性:
<ATTRIBUTE NAME="SessionStick" VALUE="false"/>
就可以关闭会话粘滞。如果想采用其他策略来选择节点,可以增加属性:
<ATTRIBUTE NAME="BalancePolicy" VALUE="Random"/>
其中Value值可以选择:Random,Round-Robin,LoadWeight.注意当用户选择LoadWeight的时候,还需要增加
属性:
<ATTRIBUTE NAME="LoadWeight" VALUE="10,20,70"/>
来标识权重的值。其值与服务器地址列表中的服务器一一对应。此外,用户还可以扩展自己的负载均衡策略
,只要实现LoadBalancePolicy接口,同时增加属性:
<ATTRIBUTE NAME="BalancePolicyClass" VALUE="userclass "/>
其中Value值为用户自定义的类。当两个属性BalancePolicy,BalancePolicyClass同时存在时,
BalancePolicyClass的优先级高。
要使用Session的分布式功能,集群中每台Apusic服务器的SessionService中属性:
<ATTRIBUTE NAME="Distributable" VALUE="True"/>值必须为True。默认情况下为False。
当上面的配置完成后,负载均衡器可以通过命令行方式启动,不同的是需要增加-config参数指明负载均衡器
的配置文件,例如:
java -classpath C:\apusic-6.0\lib\apusic.jar;C:\apusic-6.0\lib\tools.jar;C:\apusic-6.0
\lib\mejb.jar;C:\apusic-6.0\common\javaee.jar; com.apusic.server.Main –root C:\apusic-6.0
\domains\mydomain -config C:\apusic-6.0\domains\mydomain\config\loadbalancer.conf
4 HTTP线程池的性能调优
属性描述值类型缺省值
MinSpareThreads此属性决定线程池中的最小备用线程数整型5
MaxSpareThreads此属性决定线程池中的最大备用线程数整型30
MaxThreads此属性决定线程池所能提供的最大线程数,-1表示不限数量整型30
MaxQueueSize此属性决定等待获取线程队列的最大长度(可以适当加大)整型500
IdleTimeout等待超时时间,当线程池中的某个线程等待被使用的实际时间超过此属性数值时,线程池
自动关闭此线程整型,单位为秒300
WebService的线程池配置应当将MaxSpareThreads和MaxThreads这两个属性的值设为一致,以避免频繁的线
程创建和销毁。
另外,在进行高强度压力测试时可以把Muxer的Backlog调高一点,至少达到500。
Http service部分参数调整
A
WaitingClientTimeout
表示当队列已满时经过多长时间将请求抛弃(如果期望在测试中少出现访问失败,而对时间响应要求可以容
忍慢一些,该参数可适当加大)
整型
单位为秒 5
B
MaxWaitingClients
如果当前并发用户数已达到最大值,则客户请求被保持到一个队列中,此参数决定此队列可保持的最大等待
客户请求数(如果期望在测试中少出现访问失败,而对时间响应要求可以容忍慢一些,该参数可适当加大)
整型
500
KeepAlive
此属性决定是否保持与当前客户端的连接(最好为“true”,复用socket)
true
KeepAliveTimeout
与当前客户端连接的超时数(如果客户端访问不是太频繁,可适当增大该值)
整型
15
MaxKeepAliveRequests
客户端请求被保持到一个请求队列,此属性用于决定请求队列可保持的最大客户端请求数
整型
100
MaxKeepAliveConnections
表示系统同时保存的最大连接个数,超过这一个数时最近最少被使用的连接将被关闭(和上一个参数保持适
当的比例)
整型
300
ServletReloadCheckInterval
检查Servlet 是否被修改的时间间隔(如果系统可以长时间不变,可将该值设的大一些)
整型
单位是秒
30
由于Https的Muxer分发部分处理机制不太相同(不能用NIO机制),所以Https的性能参数设定除了调整
Http线程池外,同时还会用到Muxer线程池。
建议Muxhandle线程池的参数和Http线程池的参数相同
5 数据库连接池性能调优
min-spare-connections
连接池保持的最小备用物理连接数。当连接池中的备用物理连接被分配给客户请求后,连接池中的备用物理
连接的实际数量小于此数时,应用服务器将建立新的物理连接到连接池中备用
整型
5
max-spare-connections
连接池保持的最大备用物理连接数。当应用程序完成对连接的操作,应用程序所使用的物理连接被返回到连
接池中作为备用连接,当连接池中的实际备用物理连接的实际数量大于此数时,应用服务器将关闭此物理连
接
整型
30
max-connections
该连接池允许创建的最大的连接数量
整型
30
idle-timeout
物理连接等待超时时间。当连接池中的某个数据库物理连接等待被使用的实际时间超过此属性数值时,连接
池自动关闭此数据库物理连接。
整型
单位是秒
300
test-before-reused
设置为true允许连接失效检测,false为不允许连接失效检测。
字符串
false