noel0217 发表于 2017-1-30 15:14:06

tomcat 优化到每秒并发1000

现在系统部署只能达到240+ , tomcat + apache 也只能到 900 + ,看到robbin的发帖能达到1000 ,不知道该如何配置,特来请教:

http://www.iteye.com/post/370111?page=8







robbin 写道

既然你用tomcat4都可以达到并发600,那tomcat5.5在同样环境下经过调优完全可以达到1000,看来问题还是在于你们tomcat没有配置好。
  附带环境配置如下:
  环境配置如下: (jdk没有用 -server)

Java代码





[*]windows2003企业版sp2
[*]
[*]
Intel(R)Xeon(R)4CPU5130@2.0GHz4.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



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

Xml代码





[*]<Executorname="tomcatThreadPool"namePrefix="catalina-exec-"maxThreads="2000"minSpareThreads="1000"/>
[*]
[*]
[*]
<Connectorport="8080"protocol="HTTP/1.1"
[*]
connectionTimeout="2000"
[*]
redirectPort="8443"enableLookups="false"
[*]
acceptCount="5000"maxThreads="2000"/>




<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

Java代码





[*]setJAVA_OPTS=-Xms1400m-Xmx1400m-Djava.awt.headless=true



set JAVA_OPTS=-Xms1400m -Xmx1400m -Djava.awt.headless=true
  index.jsp (除了下面这些代码,还有200行html代码,没有一个图片)

Java代码





[*]<%
[*]
for(inti=0;i<1000;i++){
[*]
request.setAttribute("key_"+i,"value_"+i);
[*]}
[*]
[*]
[*]
for(inti=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")%>



<%
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 启动信息如下:

Java代码





[*]2008-5-617:54:52org.apache.catalina.core.AprLifecycleListenerinit
[*]
信息:LoadedAPRbasedApacheTomcatNativelibrary1.1.10.
[*]
2008-5-617:54:52org.apache.catalina.core.AprLifecycleListenerinit
[*]
信息:APRcapabilities:IPv6[false],sendfile[true],acceptfilters[false],r
[*]
andom[true].
[*]
2008-5-617:54:52org.apache.coyote.http11.Http11AprProtocolinit
[*]
信息:InitializingCoyoteHTTP/1.1onhttp-8080
[*]
2008-5-617:54:52org.apache.coyote.ajp.AjpAprProtocolinit
[*]
信息:InitializingCoyoteAJP/1.3onajp-30008
[*]
2008-5-617:54:52org.apache.catalina.startup.Catalinaload
[*]
信息:Initializationprocessedin973ms
[*]
2008-5-617:54:52org.apache.catalina.core.StandardServicestart
[*]信息:StartingserviceCatalina
[*]
2008-5-617:54:52org.apache.catalina.core.StandardEnginestart
[*]
信息:StartingServletEngine:ApacheTomcat/6.0.16
[*]
2008-5-617:54:52org.apache.coyote.http11.Http11AprProtocolstart
[*]
信息:StartingCoyoteHTTP/1.1onhttp-8080
[*]
2008-5-617:54:53org.apache.coyote.ajp.AjpAprProtocolstart
[*]
信息:StartingCoyoteAJP/1.3onajp-30008
[*]
2008-5-617:54:53org.apache.catalina.startup.Catalinastart
[*]
信息:Serverstartupin310ms



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 , sendfile , accept filters , r
andom .
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 测试结果:

Java代码





[*]D:\Apache2.2\bin>ab-n10000-c800http://127.0.0.1/index.jsp
[*]
[*]
ServerSoftware:Apache/2.2.4
[*]
ServerHostname:127.0.0.1
[*]
ServerPort:80
[*]
[*]DocumentPath:/index.jsp
[*]
DocumentLength:41078bytes
[*]
[*]
ConcurrencyLevel:800
[*]
Timetakenfortests:34.46875seconds
[*]
Completerequests:10000
[*]
Failedrequests:0
[*]
Writeerrors:0
[*]
Totaltransferred:413090000bytes
[*]
HTMLtransferred:410780000bytes
[*]
Requestspersecond:293.71[#/sec](mean)
[*]
Timeperrequest:2723.750(mean)
[*]
Timeperrequest:3.405(mean,acrossallconcurrentrequests)
[*]
Transferrate:11848.61received
[*]
[*]ConnectionTimes(ms)
[*]minmean[+/-sd]medianmax
[*]
Connect:001.8015
[*]
Processing:1520343425.192123265
[*]
Waiting:020253423.892123250
[*]
Total:1520343425.192123265
[*]
[*]Percentageoftherequestsservedwithinacertaintime(ms)
[*]
50%921
[*]
66%1343
[*]
75%1656
[*]
80%1875
[*]
90%5078
[*]
95%9421
[*]
98%15828
[*]
99%18171
[*]
100%23265(longestrequest)
[*]
[*]
D:\Apache2.2\bin>ab-n10000-c1000http://127.0.0.1/index.jsp
[*]
[*]
ServerSoftware:Apache/2.2.4
[*]
ServerHostname:127.0.0.1
[*]
ServerPort:80
[*]
[*]DocumentPath:/index.jsp
[*]
DocumentLength:323bytes
[*]
[*]
ConcurrencyLevel:1000
[*]
Timetakenfortests:24.265625seconds
[*]
Completerequests:10000
[*]
Failedrequests:3953
[*]
(Connect:0,Length:3953,Exceptions:0)
[*]
Writeerrors:0
[*]
Non-2xxresponses:8686
[*]
Totaltransferred:58651479bytes
[*]
HTMLtransferred:56541921bytes
[*]
Requestspersecond:412.11[#/sec](mean)
[*]
Timeperrequest:2426.563(mean)
[*]
Timeperrequest:2.427(mean,acrossallconcurrentrequests)
[*]
Transferrate:2360.38received
[*]
[*]ConnectionTimes(ms)
[*]minmean[+/-sd]medianmax
[*]
Connect:001.7015
[*]
Processing:015734416.43123984
[*]
Waiting:015634402.53123984
[*]
Total:015734416.53123984
[*]
[*]Percentageoftherequestsservedwithinacertaintime(ms)
[*]
50%31
[*]
66%62
[*]
75%62
[*]
80%62
[*]
90%7031
[*]
95%13234
[*]
98%18218
[*]
99%19859
[*]
100%23984(longestrequest)



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 (mean)
Time per request:       3.405 (mean, across all concurrent requests)
Transfer rate:          11848.61 received
Connection Times (ms)
minmean[+/-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 (mean)
Time per request:       2.427 (mean, across all concurrent requests)
Transfer rate:          2360.38 received
Connection Times (ms)
minmean[+/-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比较正常,偶尔有少量错误):

Java代码





[*]D:\Apache2.2\bin>ab-n1000-c250http://127.0.0.1:8080/index.jsp
[*]
ThisisApacheBench,Version2.0.40-dev<$Revision:1.146$>apache-2.0
[*]
Copyright1996AdamTwiss,ZeusTechnologyLtd,http://www.zeustech.net/
[*]
Copyright2006TheApacheSoftwareFoundation,http://www.apache.org/
[*]
[*]
Benchmarking127.0.0.1(bepatient)
[*]
Completed100requests
[*]Sendrequestfailed!
[*]Sendrequestfailed!
[*]Sendrequestfailed!
[*]Sendrequestfailed!
[*]Sendrequestfailed!
[*]
Completed200requests
[*]Sendrequestfailed!
[*]
apr_socket_recv:远程主机强迫关闭了一个现有的连接。(730054)
[*]
Totalof223requestscompleted
[*]
[*]
D:\Apache2.2\bin>ab-n1000-c250http://127.0.0.1:8080/index.jsp
[*]
[*]
ServerSoftware:Apache-Coyote/1.1
[*]
ServerHostname:127.0.0.1
[*]
ServerPort:8080
[*]
[*]DocumentPath:/index.jsp
[*]
DocumentLength:41078bytes
[*]
[*]
ConcurrencyLevel:250
[*]
Timetakenfortests:2.390625seconds
[*]
Completerequests:1000
[*]
Failedrequests:0
[*]
Writeerrors:0
[*]
Totaltransferred:41292000bytes
[*]
HTMLtransferred:41078000bytes
[*]
Requestspersecond:418.30[#/sec](mean)
[*]
Timeperrequest:597.656(mean)
[*]
Timeperrequest:2.391(mean,acrossallconcurrentrequests)
[*]
Transferrate:16867.56received
[*]
[*]ConnectionTimes(ms)
[*]minmean[+/-sd]medianmax
[*]
Connect:001.9015
[*]
Processing:109575314.15151218
[*]
Waiting:62550315.04531156
[*]
Total:109575314.15151218
[*]
[*]Percentageoftherequestsservedwithinacertaintime(ms)
[*]
50%515
[*]
66%609
[*]
75%921
[*]
80%1031
[*]
90%1062
[*]
95%1125
[*]
98%1140
[*]
99%1140
[*]
100%1218(longestrequest)



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 (mean)
Time per request:       2.391 (mean, across all concurrent requests)
Transfer rate:          16867.56 received
Connection Times (ms)
minmean[+/-sd] median   max
Connect:      0    0   1.9      0      15
Processing:   109575 314.1    515    1218
Waiting:       62550 315.0    453    1156
Total:      109575 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收费,所以就没有测试。(主要是真实部署的时候会采用这些配置,收费的公司目前也不会购买!^_^)
页: [1]
查看完整版本: tomcat 优化到每秒并发1000