获取 NoHttpResponse负载测试的异常
2022-09-01 16:39:02
我正在为我的应用程序运行负载测试。我有两台服务器:一台带有我的应用程序,另一台是负责为我提供响应的虚拟服务器。
在我的虚拟服务器中,我有以下jsp代码:
<%@ page import="java.util.Random" %>
<%@ page language="java" %>
<%@ page session="false" %>
<%
String retVal = "some json string";
Thread.sleep(50);
%>
我正在使用tomcat7运行该应用程序。我的服务器.xml连接池(在两个服务器中)如下所示:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1500" minSpareThreads="1000" prestartminSpareThreads="true" />
<Connector port="9031" protocol="HTTP/1.1"
connectionTimeout="20000"
maxConnections="4000"
executor="tomcatThreadPool"
redirectPort="8443" />
我从服务器运行的java代码是:
HttpPost post = new HttpPost(bidderUrl);
post.setHeader("Content-Type", "application/json");
// I'm using http client with ThreadSafeClientConnManager
// total conn = 500, max conn per route = 100, timeout=500millis
HttpClient httpClient = httpClientFactory.getHttpClient();
try {
post.setEntity(new StringEntity(jsobBidRequest));
HttpResponse response = httpClient.execute(post);
...
catch (NoHttpResponseException e){
log.error(e);
}
我正在运行具有50个并发线程(没有循环)的Jmetter,并得到很多这样的异常:
org.apache.http.NoHttpResponseException The target server failed to respond
虽然我只运行5或10个并发线程,但一切正常。
您能告诉我我的设置中可能出了什么问题吗?根据我的理解,我没有看到50个并发线程请求的任何错误。