亲们,你们的tomcat并发能到多少?

原创
2014/08/18 16:33
阅读数 1.5W

配置:Intel Xeon E5 2.4G*6核,16G内存,Redhat Linux X64,jdk 7(server),tomcat 8.9

改了tomcat 内存配置,开启了nio+epoll,结果仍不好看。。。


vi bin/catalina.sh

CATALINA_OPTS='-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider'
JAVA_OPTS= -Xms800M -Xmx1500M -XX:PermSize=128M -XX:MaxPermSize=300M


vi conf/server.xml

<Connector port="7080" protocol="org.apache.coyote.http11.Http11NioProtocol"
               connectionTimeout="20000"
               redirectPort="7443" 
               acceptorThreadCount="6"
               acceptCount="800"
               maxThreads="400"
               compression="on"
               compressionMinSize="2048"
               noCompressionUserAgents="gozilla,traviata" 
               compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"/>


采用jfinal+beetl模板,apache ab压力测试结果:

D:\tools\Apache2.2\bin>ab -n 1000 -c 50 http://192.168.xx.xxx:7080/jfinalBeetl
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.xx.xxx (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        Apache-Coyote/1.1
Server Hostname:        192.168.xx.xxx
Server Port:            7080

Document Path:          /jfinalBeetl
Document Length:        327 bytes

Concurrency Level:      50
Time taken for tests:   0.656 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Non-2xx responses:      1000
Total transferred:      146000 bytes
HTML transferred:       0 bytes
Requests per second:    1523.81 [#/sec] (mean)
Time per request:       32.813 [ms] (mean)
Time per request:       0.656 [ms] (mean, across all concurrent requests)
Transfer rate:          217.26 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   2.6      0      16
Processing:     0   32   6.3     31      47
Waiting:        0   20  11.2     16      47
Total:          0   32   6.4     31      47

Percentage of the requests served within a certain time (ms)
  50%     31
  66%     31
  75%     31
  80%     31
  90%     47
  95%     47
  98%     47
  99%     47
 100%     47 (longest request)


未采用beetl,apache ab测试结果:

D:\tools\Apache2.2\bin>ab -n 1000 -c 50 http://192.168.xx.xxx:7080/Root
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.xx.xxx (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        Apache-Coyote/1.1
Server Hostname:        192.168.xx.xxx
Server Port:            7080

Document Path:          /Root
Document Length:        11430 bytes

Concurrency Level:      50
Time taken for tests:   1.297 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      11571000 bytes
HTML transferred:       11430000 bytes
Requests per second:    771.08 [#/sec] (mean)
Time per request:       64.844 [ms] (mean)
Time per request:       1.297 [ms] (mean, across all concurrent requests)
Transfer rate:          8713.10 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   4.1      0      16
Processing:    16   62   9.7     63      94
Waiting:        0   29  18.1     31      78
Total:         16   63   9.5     63      94

Percentage of the requests served within a certain time (ms)
  50%     63
  66%     63
  75%     63
  80%     63
  90%     78
  95%     78
  98%     78
  99%     78
 100%     94 (longest request)


麻,再改进一下,估计能到2000多,曾听某网友说,调优后的tomcat项目能到3000,不知道是怎么做的。。。

哪位亲给说说。。。


以下由 明月照大江网友提供:

我看了一下,tomcat给的几个参数,你先别忙着上集群,试试这些,tomcat8
1.Executor 配置
1.1 maxThreads ,默认是200,把这个设置这个数值,可以再高一些。400,800都试试。会有瓶颈。
2.HTTP Connector 设置
2.1 acceptCount 默认是100,调高,翻几倍试试
2.2 acceptorThreadCount 默认是1,调成CPU线程数,比如4核心8线程,就调成8.
2.3 maxThreads 默认是200,调高
2.4 processorCache 如果使用servlet3.0,配置到和 maxThread 一样
任何和缓冲区相关的配置都可以调大。
JVM参数尽量调大,各代配合合适的内存回收算法。
etc
详见:http://tomcat.apache.org/tomcat-8.0-doc/config/http.html
压缩选项之类的可以看着来,其他的比如可以把NIO2改成 APR。
以上是根据官网给的配置信息  “利用丰富的想象力” 得来的答案,没有经过任何测试。
先榨干一个tomcat,再上集群!


以下转自http://blog.csdn.net/lifetragedy/article/details/7708724:

Tomcat的优化分成两块:
Tomcat启动命令行中的优化参数即JVM优化
Tomcat容器自身参数的优化(这块很像ApacheHttp Server)

catalina.sh
export JAVA_OPTS=.....
-server: 我不管你什么理由,只要你的tomcat是运行在生产环境中的,这个参数必须给我加上
–Xmn: 设置年轻代大小为512m。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-Xss: 是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程 大约需要占用多少内存,可能会有多少线程同时运行等。一般不易设置超过1M



展开阅读全文
打赏
3
32 收藏
分享
加载中
买手机不能只为跑分 用起来烫不烫手 时间长了是不是还流畅 是不是容易坏 坏了售后服务好不好 性价比 这些也得看看
2016/10/31 20:12
回复
举报
实际部署后受到带宽限制,几10到几百都有可能,如果需要达到很大的并发,需要带宽、linux内核、tomcat、缓存一起优化方可
2015/11/19 15:48
回复
举报
优化过tomcat,使用ab测试tomcat默认首页访问jsp可以达到8k/s,动态action的post请求mybatis+memcache访问mysql 800/s
2015/11/19 15:47
回复
举报
我觉得吧, 测试要 试着 让页面加载多一些 变量,数据加载再测试会好些。
2015/07/22 08:39
回复
举报
留意
2015/07/08 23:26
回复
举报
给楼主提个醒,第一个ab测试里的输出Non-2xx responses: 1000,稍微留一下。只要把ab -n 1000 -c 50 http://192.168.xx.xxx:7080/Root改成ab -n 1000 -c 50 "http://192.168.xx.xxx:7080/Root"就不会出现Non-2xx responses了。然后再压测下,结果会更准确。
2015/07/08 23:26
回复
举报
用了beetl,提高一倍,哈哈
2014/10/17 13:41
回复
举报
完全完全的没有狗屁意义。真实业务下,才有意义。
2014/08/20 15:11
回复
举报

引用来自“dreamers”的评论

完全没有意义。本机或局域网的情况就算给你压到了3000,放到真实生产环境最多也就几百。
不过关于JVM的调试的话,最好固定内存大小,不要让JVM频繁的进行GC,Tomcat配置好线程池,以及不解析DNS,再开启压缩,配置并行新生代收集器+CMS应该就算是不错了。
放到公网上怎么提高并发?
2014/08/19 10:27
回复
举报

引用来自“朱宏青”的评论

同意楼上,没有业务的测试真心没什么太大意义,不过还是放下数据
I7 笔记本 1G tomcat 压ROOT
C:\Users>ab -n 1000 -c 50 http://127.0.0.1:8080/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Server Software: Apache-Coyote/1.1
Server Hostname: 127.0.0.1
Server Port: 8080

Document Path: /
Document Length: 11780 bytes

Concurrency Level: 50
Time taken for tests: 0.334 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 11926000 bytes
HTML transferred: 11780000 bytes
Requests per second: 2993.84 [#/sec] (mean)
Time per request: 16.701 [ms] (mean)
Time per request: 0.334 [ms] (mean, across all concurrent requests)
Transfer rate: 34867.73 [Kbytes/sec] received
Requests per second: 2993.84 [#/sec] (mean),怎么做到的。。。
2014/08/18 17:54
回复
举报
更多评论
打赏
12 评论
32 收藏
3
分享
返回顶部
顶部