锁定老帖子 主题:tomcat 优化到每秒并发1000
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-08-31
这样测试我个人觉得是有问题的。
建议使用LoadRunner来测试。通过指定一定用户量(比如100)来看TPS(Transaction per second)能达到多少。 |
|
返回顶楼 | |
发表时间:2008-09-01
webeasymail 写道
现在系统部署只能达到240+ , tomcat + apache 也只能到 900 + ,看到robbin的发帖能达到1000 ,不知道该如何配置,特来请教:
http://www.iteye.com/post/370111?page=8
robbin 写道
既然你用tomcat4都可以达到并发600,那tomcat5.5在同样环境下经过调优完全可以达到1000,看来问题还是在于你们tomcat没有配置好。
附带环境配置如下:
环境配置如下: (jdk没有用 -server) windows 2003 企业版 sp2 Intel(R) Xeon(R) 4 CPU 5130 @ 2.0GHz 4.00GB 内存 apache_2.2.8-win32-x86 mod_jk-apache-2.0.59 jdk-1_5_0_14-windows-i586-p.exe -client Tomcat-6.0.16 + apr
server.xml <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="2000" minSpareThreads="1000"/> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8443" enableLookups="false" acceptCount="5000" maxThreads="2000"/> catalina.bat set JAVA_OPTS=-Xms1400m -Xmx1400m -Djava.awt.headless=true
index.jsp (除了下面这些代码,还有200行html代码,没有一个图片) <% for(int i=0;i<1000;i++){ request.setAttribute("key_"+i,"value_"+i); } for(int i=0;i<100;i++){ request.getSession().setAttribute("key_"+i,"value_"+i); } %> <br /> <%=request.getSession().getAttribute("key_0")%> <%=request.getSession().getAttribute("key_0")%> <%=request.getSession().getAttribute("key_0")%> <%=request.getSession().getAttribute("key_0")%> <%=request.getSession().getAttribute("key_0")%> <%=request.getSession().getAttribute("key_0")%> tomat 启动信息如下: 2008-5-6 17:54:52 org.apache.catalina.core.AprLifecycleListener init 信息: Loaded APR based Apache Tomcat Native library 1.1.10. 2008-5-6 17:54:52 org.apache.catalina.core.AprLifecycleListener init 信息: APR capabilities: IPv6 [false], sendfile [true], accept filters [false], r andom [true]. 2008-5-6 17:54:52 org.apache.coyote.http11.Http11AprProtocol init 信息: Initializing Coyote HTTP/1.1 on http-8080 2008-5-6 17:54:52 org.apache.coyote.ajp.AjpAprProtocol init 信息: Initializing Coyote AJP/1.3 on ajp-30008 2008-5-6 17:54:52 org.apache.catalina.startup.Catalina load 信息: Initialization processed in 973 ms 2008-5-6 17:54:52 org.apache.catalina.core.StandardService start 信息: Starting service Catalina 2008-5-6 17:54:52 org.apache.catalina.core.StandardEngine start 信息: Starting Servlet Engine: Apache Tomcat/6.0.16 2008-5-6 17:54:52 org.apache.coyote.http11.Http11AprProtocol start 信息: Starting Coyote HTTP/1.1 on http-8080 2008-5-6 17:54:53 org.apache.coyote.ajp.AjpAprProtocol start 信息: Starting Coyote AJP/1.3 on ajp-30008 2008-5-6 17:54:53 org.apache.catalina.startup.Catalina start 信息: Server startup in 310 ms ----------------------------------------------------------------------------------------- 下面是测试结果:
tomcat + apache 测试结果: D:\Apache2.2\bin>ab -n 10000 -c 800 http://127.0.0.1/index.jsp Server Software: Apache/2.2.4 Server Hostname: 127.0.0.1 Server Port: 80 Document Path: /index.jsp Document Length: 41078 bytes Concurrency Level: 800 Time taken for tests: 34.46875 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 413090000 bytes HTML transferred: 410780000 bytes Requests per second: 293.71 [#/sec] (mean) Time per request: 2723.750 [ms] (mean) Time per request: 3.405 [ms] (mean, across all concurrent requests) Transfer rate: 11848.61 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 1.8 0 15 Processing: 15 2034 3425.1 921 23265 Waiting: 0 2025 3423.8 921 23250 Total: 15 2034 3425.1 921 23265 Percentage of the requests served within a certain time (ms) 50% 921 66% 1343 75% 1656 80% 1875 90% 5078 95% 9421 98% 15828 99% 18171 100% 23265 (longest request) D:\Apache2.2\bin>ab -n 10000 -c 1000 http://127.0.0.1/index.jsp Server Software: Apache/2.2.4 Server Hostname: 127.0.0.1 Server Port: 80 Document Path: /index.jsp Document Length: 323 bytes Concurrency Level: 1000 Time taken for tests: 24.265625 seconds Complete requests: 10000 Failed requests: 3953 (Connect: 0, Length: 3953, Exceptions: 0) Write errors: 0 Non-2xx responses: 8686 Total transferred: 58651479 bytes HTML transferred: 56541921 bytes Requests per second: 412.11 [#/sec] (mean) Time per request: 2426.563 [ms] (mean) Time per request: 2.427 [ms] (mean, across all concurrent requests) Transfer rate: 2360.38 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 1.7 0 15 Processing: 0 1573 4416.4 31 23984 Waiting: 0 1563 4402.5 31 23984 Total: 0 1573 4416.5 31 23984 Percentage of the requests served within a certain time (ms) 50% 31 66% 62 75% 62 80% 62 90% 7031 95% 13234 98% 18218 99% 19859 100% 23984 (longest request) tomcat 单独测试结果 (250并发会经常失败,200比较正常,偶尔有少量错误): D:\Apache2.2\bin>ab -n 1000 -c 250 http://127.0.0.1:8080/index.jsp This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking 127.0.0.1 (be patient) Completed 100 requests Send request failed! Send request failed! Send request failed! Send request failed! Send request failed! Completed 200 requests Send request failed! apr_socket_recv: 远程主机强迫关闭了一个现有的连接。 (730054) Total of 223 requests completed D:\Apache2.2\bin>ab -n 1000 -c 250 http://127.0.0.1:8080/index.jsp Server Software: Apache-Coyote/1.1 Server Hostname: 127.0.0.1 Server Port: 8080 Document Path: /index.jsp Document Length: 41078 bytes Concurrency Level: 250 Time taken for tests: 2.390625 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 41292000 bytes HTML transferred: 41078000 bytes Requests per second: 418.30 [#/sec] (mean) Time per request: 597.656 [ms] (mean) Time per request: 2.391 [ms] (mean, across all concurrent requests) Transfer rate: 16867.56 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 1.9 0 15 Processing: 109 575 314.1 515 1218 Waiting: 62 550 315.0 453 1156 Total: 109 575 314.1 515 1218 Percentage of the requests served within a certain time (ms) 50% 515 66% 609 75% 921 80% 1031 90% 1062 95% 1125 98% 1140 99% 1140 100% 1218 (longest request) 单独测试tomcat基本上只能达到240+左右的并发,tomcat+apache 900+并发,如果是静态页面tomcat并发1000+没有任何问题。 tomcat基本上都保持在 20% - 45% 之间 , 内存在 80M -- 600M +之间 ,根据并发和请求的大小,内存的变法比较明显,cpu基本保存在这里,apache占用的cpu基本上是在 15% - 40%。 因为JRockit收费,所以就没有测试。(主要是真实部署的时候会采用这些配置,收费的公司目前也不会购买!^_^)
不知道大家如何配置tomcat能并发1000左右 ????????
|
|
返回顶楼 | |
发表时间:2008-09-03
我的是P4 3G + 1G内存的PC机,系统XP,63并发可以通过,超过这个数量马上显示:
apr_poll:由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作 啥原因啊? |
|
返回顶楼 | |
发表时间:2008-11-14
这个测试意义不大
一般WIN2003和LINUX不需要啥优化就可以上到1000 但是实际上并发能稳定200就不错,一般的机器 |
|
返回顶楼 | |
发表时间:2008-11-15
robbin 写道 我在JavaEye的数据库服务器上面简单测试了一把,没有做任何优化的工作,用ab测试,并发1000个请求很轻松,一点问题都没有。
系统配置: CPU: AMD Opteron 2GHz × 2 内存: 4G RAM (其中MySQL使用了2G) OS: SuSE Linux Enterprise Server SP3 x86_64 bit, Kernel 2.6.5 JDK: Sun HotSpot 1.5.0-10 x86_64 bit Tomcat: 5.5.12 (APR) Tomcat配置: 至少有两点优势: x64,linux kernel 2.6,多线程性能比楼主的win 32强 tomcat有APR优化,性能也比纯java的强 |
|
返回顶楼 | |
发表时间:2008-11-25
最后修改:2008-11-25
环境配置
os:windows xp sp2 cup:intel T2080@1.73GHz memory:1G jdk:jdk-1_5_0_12-windows-i586-p tomcat:5.5.27 apache:apache_2.2.10-win32-x86-no_ssl 对tomcat不做任何参数修改 ab -n 10000 -c 1000 http://127.0.0.1:8080/tomcat-connect-test/index.jsp 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) Test aborted after 10 failures apr_socket_connect(): No connection could be made because the target machine act ively refused it. (730061) tomcat控制台显示oom 严重: Error processing request java.lang.OutOfMemoryError: Java heap space 在tomcat的startup.bat中添加参数 SET JAVA_OPTS=-Xms256m -Xmx256m -Djava.awt.headless=true 再次执行ab测试 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) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: Apache-Coyote/1.1 Server Hostname: 127.0.0.1 Server Port: 8080 Document Path: /tomcat-connect-test/index.jsp Document Length: 705 bytes Concurrency Level: 1000 Time taken for tests: 21.250 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 9557187 bytes HTML transferred: 7050000 bytes Requests per second: 470.59 [#/sec] (mean) Time per request: 2125.000 [ms] (mean) Time per request: 2.125 [ms] (mean, across all concurrent requests) Transfer rate: 439.21 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 19.2 0 500 Processing: 109 1933 869.0 1484 4234 Waiting: 63 1122 765.2 1000 3484 Total: 109 1934 869.9 1500 4234 Percentage of the requests served within a certain time (ms) 50% 1500 66% 1938 75% 2453 80% 2734 90% 3453 95% 3797 98% 3828 99% 3828 100% 4234 (longest request) tomcat控制台显示 严重: All threads (150) are currently busy, waiting. Increase maxThreads (150) or check the servlet status apache+tomcat暂时没做测试 |
|
返回顶楼 | |
发表时间:2008-11-26
最后修改:2008-11-26
apache+tomcat测试
环境配置: tomcat:5.0.28 apache:apache_2.2.4-win32-x86-no_ssl 在tomcat的startup.bat中添加参数 SET JAVA_OPTS=-Xms256m -Xmx256m -Djava.awt.headless=true 修改server.xml中8009端口配置 <Connector port="8009" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" protocol="AJP/1.3" /> ab -n 10000 -c 1000 http://127.0.0.1:8181/tomcat-connect-test/index.jsp This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking 127.0.0.1 (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Finished 10000 requests Server Software: Apache/2.2.4 Server Hostname: 127.0.0.1 Server Port: 8181 Document Path: /tomcat-connect-test/index.jsp Document Length: 705 bytes Concurrency Level: 1000 Time taken for tests: 103.968750 seconds Complete requests: 10000 Failed requests: 3 (Connect: 3, Length: 0, Exceptions: 0) Write errors: 0 Total transferred: 9730000 bytes HTML transferred: 7050000 bytes Requests per second: 96.18 [#/sec] (mean) Time per request: 10396.875 [ms] (mean) Time per request: 10.397 [ms] (mean, across all concurrent requests) Transfer rate: 91.38 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 9 69.7 0 1015 Processing: 359 10003 2537.5 10156 28828 Waiting: 359 6266 3074.4 6046 27359 Total: 359 10013 2536.9 10156 28828 Percentage of the requests served within a certain time (ms) 50% 10156 66% 10265 75% 10531 80% 10578 90% 12046 95% 12578 98% 13593 99% 14046 100% 28828 (longest request) tomcat控制台显示 2008-11-26 1:01:05 org.apache.jk.common.ChannelSocket processConnection 信息: connection timeout reached 貌似效果还不如直接跑tomcat |
|
返回顶楼 | |
发表时间:2008-12-20
最后修改:2008-12-20
TOMCAT单挑
环境: Tomcat 6.0 Red Hat Enterprise Linux Server release 5 (Tikanga) Java(TM) SE Runtime Environment (build 1.6.0_10-b33) ... CPU3: Intel(R) Xeon(R) CPU E5450 @ 3.00GHz stepping 06 checking TSC synchronization across 4 CPUs: passed. Brought up 4 CPUs ab -n 10000 -c 1000 http://localhost/sysmanage/login.jsp 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 localhost (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: Apache-Coyote/1.1 Server Hostname: localhost Server Port: 80 Document Path: /sysmanage/login.jsp Document Length: 5656 bytes Concurrency Level: 1000 Time taken for tests: 0.916 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 59000716 bytes HTML transferred: 56627872 bytes Requests per second: 10922.24 [#/sec] (mean) Time per request: 91.556 [ms] (mean) Time per request: 0.092 [ms] (mean, across all concurrent requests) Transfer rate: 62931.65 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 2 2.9 2 22 Processing: 1 9 10.8 8 104 Waiting: 0 6 11.1 4 104 Total: 3 11 11.0 10 107 Percentage of the requests served within a certain time (ms) 50% 10 66% 11 75% 11 80% 12 90% 14 95% 16 98% 23 99% 100 100% 107 (longest request) 汗,换个多一点的 ab -n 100000 -c 1000 http://localhost/sysmanage/login.jsp ab -n 100000 -c 1000 http://localhost/sysmanage/login.jsp 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 localhost (be patient) Completed 10000 requests Completed 20000 requests Completed 30000 requests Completed 40000 requests Completed 50000 requests Completed 60000 requests Completed 70000 requests Completed 80000 requests Completed 90000 requests Completed 100000 requests Finished 100000 requests Server Software: Apache-Coyote/1.1 Server Hostname: localhost Server Port: 80 Document Path: /sysmanage/login.jsp Document Length: 5656 bytes Concurrency Level: 1000 Time taken for tests: 9.726 seconds Complete requests: 100000 Failed requests: 0 Write errors: 0 Total transferred: 589512148 bytes HTML transferred: 565803616 bytes Requests per second: 10281.79 [#/sec] (mean) Time per request: 97.259 [ms] (mean) Time per request: 0.097 [ms] (mean, across all concurrent requests) Transfer rate: 59191.80 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 66 746.7 2 9019 Processing: 0 13 32.7 9 644 Waiting: 0 8 31.9 5 638 Total: 3 79 770.2 11 9656 Percentage of the requests served within a certain time (ms) 50% 11 66% 12 75% 12 80% 13 90% 15 95% 32 98% 65 99% 98 100% 9656 (longest request) 还是很快。。。 Requests per second: 10281.79 [#/sec] (mean) 还是蛮吓人的。。。 感觉是不是可以抛弃apache了? |
|
返回顶楼 | |
发表时间:2009-01-05
最后修改:2009-01-05
测试内容为LZ提供的index页
第一次测试tomcat 配置: <Connector port="80" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" /> 第一次测试tomcat 配置: <Connector port="80" maxHttpHeaderSize="8192" maxThreads="1000" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" /> 两次测试结果: D:\Apache2.2\bin>ab -n 10000 -c 1000 http://192.168.0.240/ab.jsp 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.0.240 (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: Apache-Coyote/1.1 Server Hostname: 192.168.0.240 Server Port: 80 Document Path: /ab.jsp Document Length: 85 bytes Concurrency Level: 1000 Time taken for tests: 138.813 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 3160000 bytes HTML transferred: 850000 bytes Requests per second: 72.04 [#/sec] (mean) Time per request: 13881.250 [ms] (mean) Time per request: 13.881 [ms] (mean, across all concurrent requests) Transfer rate: 22.23 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 14 196.2 0 3063 Processing: 78 13114 3561.3 12766 21563 Waiting: 31 7155 4508.2 6297 18672 Total: 78 13128 3563.1 12766 21563 Percentage of the requests served within a certain time (ms) 50% 12766 66% 15516 75% 15609 80% 15656 90% 15781 95% 18609 98% 18719 99% 18828 100% 21563 (longest request) D:\Apache2.2\bin>ab -n 10000 -c 1000 http://192.168.0.240/ab.jsp 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.0.240 (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: Apache-Coyote/1.1 Server Hostname: 192.168.0.240 Server Port: 80 Document Path: /ab.jsp Document Length: 85 bytes Concurrency Level: 1000 Time taken for tests: 130.781 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 3160000 bytes HTML transferred: 850000 bytes Requests per second: 76.46 [#/sec] (mean) Time per request: 13078.125 [ms] (mean) Time per request: 13.078 [ms] (mean, across all concurrent requests) Transfer rate: 23.60 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 13 190.4 0 3156 Processing: 63 12267 3583.2 12703 18797 Waiting: 31 6921 4352.0 6391 15813 Total: 63 12280 3585.3 12703 18797 Percentage of the requests served within a certain time (ms) 50% 12703 66% 13016 75% 15578 80% 15609 90% 15719 95% 15828 98% 18656 99% 18719 100% 18797 (longest request) D:\Apache2.2\bin> 结论:tomcat没有配置成1000,用默认的配置150个也通过了测试,测试结果比较后差异不大? 是我哪里没配置好,还是AB测试本来就不精确? |
|
返回顶楼 | |
发表时间:2009-01-06
sunwei_07 写道 我的是P4 3G + 1G内存的PC机,系统XP,63并发可以通过,超过这个数量马上显示:
apr_poll:由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作 啥原因啊? 我这里也有一样的问题 |
|
返回顶楼 | |