obter NoHttpResponseException para teste de carga
Estou executando testes de carga para o meu aplicativo. Eu tenho dois servidores: um com meu aplicativo e um servidor fictício que é responsável por me obter respostas.
No meu servidor fictício eu tenho o seguinte código jsp:
<%@ page import="java.util.Random" %>
<%@ page language="java" %>
<%@ page session="false" %>
<%
String retVal = "some json string";
Thread.sleep(50);
%>
Estou executando o aplicativo com o tomcat7. Meu pool de conexão server.xml (em ambos os servidores) se parece com:
<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" />
O código java que estou executando nos servidores é:
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);
}
Estou executando o Jmetter com 50 threads simultâneas (sem loop) e recebo muitas exceções como esta:
org.apache.http.NoHttpResponseException The target server failed to respond
Enquanto eu estou executando apenas 5 ou 10 threads simultâneas tudo funciona bem.
Você poderia por favor me aconselhar o que poderia estar errado na minha configuração? Pelo que entendi, não vejo nenhum erro para as 50 solicitações de encadeamento simultâneas.