resin 单点压力测试

作者: 2hei 发表于2008年3月17日 22:10
版权声明: 可以转载, 转载时务必以超链形式标明文章原始出处和作者信息及版权声明
http://www.2hei.net/mt/2008/03/resin-http-pressure-test.html

今儿个做了一下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版本能更加好些?

| | Comments (0) | TrackBacks (0)

发表一个评论

关于这篇文章

这篇文章由2hei2008年3月17日 22:10发布.

上一篇:China IPV4地址 不及一家公司的多?

下一篇:不按套路出牌的爬虫!!

回到首页 或者查看归档文章

  • Powered by FeedBurner
  • Add to Google Reader or Homepage
  • Add to My AOL
  • Subscribe in NewsGator Online
  • del.icio.us/2heidel.icio.us/2hei
  • Subscribe to feed feeds