当前位置: 首页 > java, resin > 正文

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访问.

webapplication.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Top 命令显示如下:

top.png

 

 

 

 

 

 

 

 

 

 

 

vmstat显示:

vmstat.png

 

 

 

 

 

 

 

Load:

logs.png

 

 

resin-status:http://172.16.0.252/resin-status

 

resin-status1.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

数据库连接池
http://172.16.0.252/proxoolAdmins

prx111.png

 

 

 

 

 

 

 

 

#netstat -an|grep ESTABLISHED|wc -l  已经建立的连接数

670

#netstat -an|wc -l     所有连接

2971

压力测试持续了10分钟,结果除了系统负载比较大外(达到了19以上),访问速度和响应还算可以。

达到峰值后的系统,我觉得瓶颈出现在cpu上,达到90%以上。另外系统的tcp连接数量还是根据linux的内核设置有关。虽然已经将resin的http请求线程数放大到了10240,其实这或许只是个理论期望值吧。

不知道还有什么地方可以继续调优的,或许使用resin-pro版本能更加好些?

本文固定链接: http://2hei.net/resin_http_pressure_test.html | 2hei's site

该日志由 2hei 于2008年03月17日发表在 java, resin 分类下,
原创文章转载请注明: resin 单点压力测试 | 2hei's site

报歉!评论已关闭.