Tomcat 并发测试
工作需要测试了一下tomcat并发连接。 注:只是测试并发请求处理。业务、数据库相关均没有测试。OS:CentOS...
扫描右侧二维码阅读全文
04
2009/08

Tomcat 并发测试

工作需要测试了一下tomcat并发连接。
注:只是测试并发请求处理。业务、数据库相关均没有测试。

OS:CentOS 4.6 x64
CPU:Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz x2
Mem: 8G
JDK:jdk-6u14-linux-i586i
Tomcat:apache-tomcat-6.0.20
测试工具:http_load

Tomcat中同一个应用开了8000~8005 一共6个端口。

测试的过程中为了能够让http_load尽可能的平均访问不同的端口,所以urls文件里面每个端口添加了10条记录。

测试1。
首先在urls文件里面添加10条8000端口的URL地址。 [root@localhost ~]# /usr/local/bin/http_load -parallel 200 -fetches 5000 urls 5000 fetches, 200 max parallel, 510000 bytes, in 1.0391 seconds 102 mean bytes/connection 4811.88 fetches/sec, 490811 bytes/sec msecs/connect: 0.240075 mean, 0.68 max, 0.15 min msecs/first-response: 40.4642 mean, 109.282 max, 0.452 min HTTP response codes: code 200 -- 5000 [root@localhost ~]# /usr/local/bin/http_load -parallel 300 -fetches 5000 urls.txt 5000 fetches, 300 max parallel, 510000 bytes, in 3.0123 seconds 102 mean bytes/connection 1659.86 fetches/sec, 169306 bytes/sec msecs/connect: 12.2703 mean, 3000.36 max, 0.16 min msecs/first-response: 52.6458 mean, 239.945 max, 1.006 min HTTP response codes: code 200 -- 5000 [root@localhost ~]# /usr/local/bin/http_load -parallel 300 -fetches 5000 urls.txt 5000 fetches, 300 max parallel, 510000 bytes, in 0.954591 seconds 102 mean bytes/connection 5237.85 fetches/sec, 534260 bytes/sec msecs/connect: 0.279958 mean, 0.745 max, 0.155 min msecs/first-response: 55.0805 mean, 113.472 max, 0.732 min HTTP response codes: code 200 -- 5000

通过上面可以看出并发请求达到300的时候,msecs/connect、fetches/sec 已经开始变得不稳定。 [root@localhost ~]# /usr/local/bin/http_load -parallel 250 -fetches 5000 urls.txt 5000 fetches, 250 max parallel, 510000 bytes, in 3.00177 seconds 102 mean bytes/connection 1665.68 fetches/sec, 169900 bytes/sec msecs/connect: 4.44925 mean, 2999.81 max, 0.148 min msecs/first-response: 46.7389 mean, 112.785 max, 0.915 min HTTP response codes: code 200 -- 5000 [root@localhost ~]# /usr/local/bin/http_load -parallel 250 -fetches 5000 urls.txt 5000 fetches, 250 max parallel, 510000 bytes, in 0.981205 seconds 102 mean bytes/connection 5095.78 fetches/sec, 519769 bytes/sec msecs/connect: 0.255888 mean, 0.946 max, 0.142 min msecs/first-response: 47.5066 mean, 108.264 max, 0.901 min HTTP response codes: code 200 -- 5000

并发250和300存在同样的问题。这也就是说明tomcat一个端口处理200个并发比较正常。这个太让人失望了。

之后我按照上面的方法每次增加一个端口,增大parallel 进行测试。发现fetches/sec始终保持在4500+。不知道这个还能不能提升。

google搜索了一下Tomcat并发优化。好像有人可以让tomcat单端口并发达到1000。但是文章里面提到的优化方法我测试之前已经做过。-_-b

对Java的东西接触的不多,希望哪位大大可以指点指点。我的MSN:ready.king@hotmail.com。请注明“hiadmin”。谢谢~~

Last modification:November 26th, 2018 at 04:16 pm
If you think my article is useful to you, please feel free to appreciate

7 comments

  1. coolzsb

    不知道你的tomcat-native加了没有?这个东西对提高tomcat的IO能力影响还是蛮大的。

    签名
    ---
    还有点蛮奇怪的地方,为啥你跑的x86_64的Linux,用的java却是i586的?

  2. 王子

    看不懂,路过,希望博主可以写的详细点,这样对我这样的菜鸟有帮助些

  3. 美国VPS推荐

    LS,难道博主不是在Linux上测试的吗?

  4. 阿里

    建议你去看《Tomcat: the definitive guide》第二版中的调优部分
    测试在linux/unix机器上去做。

  5. imcaptor

    使用apr了吗?本地接口可能会提高稳定性和性能。

  6. ready

    好像明白点了网上所谓的并发1000是怎么回事了。
    http://www.javaeye.com/topic/190329
    看robbin的帖子。
    并发1000是并发1000了,但是
    Requests per second: 652.35 [#/sec] (mean)
    Time per request: 1532.914 [ms] (mean)
    完全牺牲了这两个参数啊。

    我按照原帖的方法只测试8080端口的结果
    [root@localhost ~]# /usr/local/bin/http_load -parallel 1000 -fetches 8000 urls.txt
    8000 fetches, 1000 max parallel, 816000 bytes, in 6.26239 seconds
    102 mean bytes/connection
    1277.47 fetches/sec, 130302 bytes/sec
    msecs/connect: 213.081 mean, 3000.97 max, 0.149 min
    msecs/first-response: 115.495 mean, 6231.77 max, 0.414 min
    HTTP response codes:
    code 200 -- 8000
    。。。。。。。。。。。。。。。。。

  7. ready

    查了很多资料说x64的tomcat并不一定比x32的快。有时甚至还要慢。

    apr已经启动~

Leave a Comment