linux下tomcat配置acceptCount与maxConnections,无法达到预期的效果

imzhiyang 2016-02-16 09:35:16
1. tomcat版本(7.0.67)+jdk版本(7.0.67)
2. server.xml中的配置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="2000" acceptCount="2" maxConnections="2" maxThreads="2" minSpareThreads="2"
redirectPort="8443" />
2. 简单写了一个java的web系统,请求/test/doTest,中不会做任何事情,只是将线程挂起等待60s
3. 采用jmter来模拟发送请求,线程数25,rampup为50s,执行一次。


预期结果:
jmeter能够处理2个请求,然后2个请求等待处理,其余21个请求收到refuse的拒绝。

实际结果:

1.25个请求的结果


2. 部分请求失败的原因是java.net.SocketException: Software caused connection abort: recv failed(非预期的)


3. 部分请求失败的原因是:refuse(预期的)


问题:
1,为什么请求1不是先执行,那么到tomcat中也应该先执行处理,为什么会到后面才处理,是我的jmeter脚本有问题吗?
2,为什么会出现此类错误,不应该都是refuse的错误吗?
3,为什么会有5个请求处理成功,理论上应该是4个成功,2个60s处理完成,2个120处理完成?
...全文
383 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mazi2004 2016-11-24
  • 打赏
  • 举报
回复
http://blog.csdn.net/kaka20099527/article/details/53285348 这个也是做的类似的测试
mazi2004 2016-11-24
  • 打赏
  • 举报
回复
你的rampup是50s,线程数25,应该是每2秒启动一个线程,从你测试结果看开始时间到秒都是一样的,这样是不合理的。
imzhiyang 2016-02-17
  • 打赏
  • 举报
回复
如果没有server.xml在connector中配置address的话,则tomcat会监听当前地址(比如多ip的)的所有8080请求,这样就会造成请求并没有根据acceptCount拒绝

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧