Web应用单点压力测试调优-第2季

 

并发1000,准备时间1s,让它产生大量的等待请求

 

第一次发起并发的时候,基本错误率在80%

 

间隔时间较短,多次发起并发

走势图

 

 

 


Web应用单点压力测试调优-第2季
 

吞吐量



 

平均错误率在28%~38%之间,不稳定。

大规模的错误异常是tomcat连接超时

 

org.apache.http.conn.HttpHostConnectException: Connection to http://192.168.137.233:8080 refused
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:190)
	at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:643)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
	at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:481)
	at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:298)
	at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)
	at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1105)
	at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1094)
	at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:429)
	at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:257)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.net.ConnectException: Connection timed out: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(Unknown Source)
	at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.SocksSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:127)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
	... 13 more

 

 

 

并发1000,准备时间2s,让它产生中量的等待请求。

 

预热稳定后,基本和准备时间1s差不多

 

并发1000,准备时间5s,让它产生少量的等待请求。

 

预热稳定后,基本和准备时间1s差不多

最后经多次测试,一般维持在750并发,2s准备时间,比较稳定。失败率在3.7%


Web应用单点压力测试调优-第2季
 

报告

 



 

所以默认配置下,基本维持在750并发,吞吐量TPS32~34左右。

 

调优1-tomcathttp连接池数调大(后续的调优在前面的调优基础之上)

 

修改tomcatserver.xml内容

 

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="1000" minSpareThreads="100" maxSpareThreads="400" acceptCount="1200" />

 

参数解释:

 

maxThreads       //最大线程数

 

minSpareThreads//初始化时创建的线程数

 

maxSpareThreads//一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。

 

acceptCount//指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中,请求数超过这个数的请求将不予处理

 

重启Tomcat,直接进行1000并发,准备时间2s测试

 

依然有很多连接异常

所以,调整tomcat的连接参数,稍微在修改一下tomcat配置文件

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="1200" minSpareThreads="300" maxSpareThreads="500" acceptCount="1500" />

 

 

继续压1000并发

预热后,得出走势图


Web应用单点压力测试调优-第2季
 吞吐量报告

 

 

 

 



 

经多次测试,1000并发,在100%成功率结果下,吞吐量很少上30/s。(TPS:34/s,错误率:5%

另一次加压100%成功率走势图


Web应用单点压力测试调优-第2季
 

报告



 

并发1200,准备时间1s

 

经多次测试,错误率基本达到70%~80%

 

错误基本集中在

 

Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Could not open connection

top之后,发现系统负载率不高。

(未完待续)

标记:第9页的开始,标题-优化策略2之前

 

 

你可能感兴趣的:(java,jvm,tomcat,linux,调优)