使用 JMeter 对 1000 个用户进行负载测试时,Apache Tomcat 连接被拒绝错误

2024-03-11

我已经在 Linux 和 Apache Tomcat 7.0.42 中部署了 Java EE 应用程序

当我使用 JMeter 对 100 个用户进行负载测试(并发 100 个线程请求)时,一切正常

但是,一旦我将用户(或线程数)更改为 1000,服务器就会被阻塞,并且它会为 ~600 之后的所有请求提供“连接被拒绝”错误。

我已经在应用程序中完成了所有微调,现在它更像是一个静态网页,即使它返回错误。

服务器配置:Ubuntu、8 个 vCPU / 32 GB RAM / 960 GB 硬盘

PS:相同的应用程序在AWS(Amazon Web Services)中运行良好,因此您可以排除我的机器运行JMeter(客户端)的任何问题

    org.apache.http.conn.HttpHostConnectException: Connection to http://a.b.c.d: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:645)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:480)
    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.sample(HTTPHC4Impl.java:286)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1088)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1077)
    at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:428)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(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)
    ... 12 more

尝试调整maxThreads and acceptCounthttp 连接器的属性server.xml:

每个传入请求在其持续时间内都需要一个线程 要求。如果同时收到的请求多于可以接收的请求 由当前可用的请求处理线程处理, 将创建额外的线程,最多可达配置的最大值( 的值最大线程数属性)。如果还更同时 收到请求,它们被堆叠在服务器套接字内 由连接器创建,最多可达配置的最大值( 这接受计数属性)。任何进一步的同时请求将 收到“连接被拒绝”错误,直到资源可用 处理它们。

参考:http://tomcat.apache.org/tomcat-7.0-doc/config/http.html http://tomcat.apache.org/tomcat-7.0-doc/config/http.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JMeter 对 1000 个用户进行负载测试时,Apache Tomcat 连接被拒绝错误 的相关文章

随机推荐