我是靠谱客的博主 强健乐曲,最近开发中收集的这篇文章主要介绍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后,这个异常就出现的非常低了。后续还要根据情况调整一下参数来适应使用场景。

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

最后

以上就是强健乐曲为你收集整理的Connection refused: connect的全部内容,希望文章能够帮你解决Connection refused: connect所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部