resin 单点压力测试
今儿个做了一下Linux下resin的访问压力测试,感觉比较好玩,resin独立作为http Server
单点不做任何负载的情况下,resin最高可以坚持到3000访问,访问量在接近4000时http无响应。
测试环境:
FC6 + oralce10g + resin3.1.3
PC机配置: AMD Sempron(tm) Processor 3800+ , 1G RAM
内网环境: Web-Server IP: 172.16.0.252
系统内核:
# uname -a
Linux 2.6.18-1.2798.fc6 #1 SMP Mon Oct 16 14:54:20 EDT 2006 i686 athlon i386 GNU/Linux
系统参数:
more /etc/sysctl.conf
kernel.shmmax = 2147483648 (2G) #oracle配置时 使用 2G 805306368 #768M
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
kernel.threads-max = 8192
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack =1
net.ipv4.tcp_window_scaling = 1
相关参数值说明
(1)shmmax:该参数定义了共享内存段的最大尺寸,因为安装了oracle,将其设置为2G。
(2)shmmni:这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改。
(3)shmall:该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改。
(4)sem:该参数表示设置的信号量。
(5)file-max:该参数表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量。
(6)threads-max:表示指定内核所能使用的线程的最大数目。
Resin 3.1.3配置
resin.conf
<jvm-arg>-Xmx768m</jvm-arg>
<jvm-arg>-Xss1m</jvm-arg>
<jvm-arg>-Xdebug</jvm-arg>
<memory-free-min>1M</memory-free-min>
<thread-max>10240</thread-max>
<socket-timeout>65s</socket-timeout>
<keepalive-max>128</keepalive-max>
<keepalive-timeout>15s</keepalive-timeout>
因为pro版,需要license,所以使用resin3.1.3开源版。
当测试访问量达到512时,系统无法接受新的请求。
所以需要修改resin源文件,参考网上相关文章。
vi com.caucho.server.port.Port.Port.java
com.caucho.server.port.Port
// Secure override for load-balancers/proxies
private boolean _isSecure;
private InetAddress _socketAddress;
// default timeout
private long _socketTimeout = DEFAULT;
private int _connectionMax = 512 ; 改为 10240
private int _minSpareConnection = 16;
private int _keepaliveMax = DEFAULT;
编译成功后替换resin.jar相应的类,重启resin服务
使用压力测试工具MS web application: 3000访问.
Top 命令显示如下:
vmstat显示:
Load:
resin-status:http://172.16.0.252/resin-status
数据库连接池
http://172.16.0.252/proxoolAdmins
#netstat -an|grep ESTABLISHED|wc -l 已经建立的连接数
670
#netstat -an|wc -l 所有连接
2971
压力测试持续了10分钟,结果除了系统负载比较大外(达到了19以上),访问速度和响应还算可以。
达到峰值后的系统,我觉得瓶颈出现在cpu上,达到90%以上。另外系统的tcp连接数量还是根据linux的内核设置有关。虽然已经将resin的http请求线程数放大到了10240,其实这或许只是个理论期望值吧。
不知道还有什么地方可以继续调优的,或许使用resin-pro版本能更加好些?
本文固定链接: https://www.2hei.net/2008/03/17/resin_http_pressure_test/ | 2hei.net
最活跃的读者