Connection refused: connect

目前做的一个项目中需要测试一下压力,没有测试人员,只好自己动手。循环开启线程,调用本地接口。

项目使用strut2和spring,tomcat,mysql

当线程数达到1000时,测试代码偶尔会报出Connection refused: connect的错误。

接下来各种查找错误,发现不太正常的情况如下:

1.调用时,系统cpu基本满额;

2.正常运行到1000的时候,会慢一下,才返回信息;


情况1:百度加自己测试后,发现因为用到strus2,所以接口每次收到请求都会创建一个线程安全的对象,然后处理请求的时候,各个线程切换,cpu就爆了。

情况2:因为接口需要记录日志信息,就用log来存储数据库,为了减少连接次数,会缓冲一部分数据后,才批量提交,刚好这个缓冲数是1000,顺带一句,批量提交时发现比较慢,后来发现自动提交忘记关了,等于没开批量一样。


后来想想,可能是tomcat没优化的问题,一看配置文件


<Executor maxThreads="1000" minSpareThreads="128" acceptCount="500"
				name="tomcatThreadPool" namePrefix="catalina-exec-" />

<Connector URIEncoding="utf-8" compressableMimeType="text ml,text/xml,text/javascript,text/css,text/plain,application/json,application/x-www-form-urlencoded"
				compression="on" compressionMinSize="256" connectionTimeout="20000"
				executor="tomcatThreadPool" noCompressionUserAgents="" port="8080"
				protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443" /> 
有优化的。仔细思考一下项目的情况后,发现原因可能是
minSpareThreads
配置太小吧。


因为根据配置文件看,tomcat接收上限是1000+500+接收时间内已经处理好的请求数,远远超出我的请求数,不可能是请求数不够,但是,我请求的时候cpu爆高,会不会是因为minspareThreads设置的太小,赶不上请求需要创建的线程数。

因此,将minspareThreads改成500后,这个异常就出现的非常低了。后续还要根据情况调整一下参数来适应使用场景。

目前还在测试,不知道什么时候能测好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值