Estoy ejecutando pruebas de carga para mi aplicación. Tengo dos servidores: uno con mi aplicación y un servidor ficticio que es responsable de obtener respuestas.obtener NoHttpResponseException para la prueba de carga
En mi servidor ficticio Tengo el siguiente código JSP:
<%@ page import="java.util.Random" %>
<%@ page language="java" %>
<%@ page session="false" %>
<%
String retVal = "some json string";
Thread.sleep(50);
%>
estoy ejecutando la aplicación con tomcat7. Mi grupo de conexión server.xml (en ambos servidores) se parece a:
<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" />
El código java estoy corriendo de los servidores es:
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);
}
estoy corriendo Jmetter con 50 hilos concurrentes (sin un bucle) y obtener una gran cantidad de excepciones como esto:
org.apache.http.NoHttpResponseException The target server failed to respond
Mientras estoy corriendo solo 5 o 10 hilos concurrentes todo funciona bien.
¿Podría por favor avisarme qué podría estar mal en mi configuración? Para mi comprensión, no veo ningún error para las 50 solicitudes de subprocesos concurrentes.
¡Julias, esto es muy útil! Muchas gracias por publicar su solución. Es exactamente lo que estoy buscando. – trillions
Su solución también me ayudó. En mi caso, la excepción NoHttpResponseException solo ocurría ocasionalmente cuando tenía el antivirus activado. El antivirus siempre ejecuta un escaneo cuando se envía una solicitud http, y en ocasiones demora un poco más, lo que hace que la solicitud falle. – Seigo
@Seigo - Entiendo que este es un hilo viejo, pero ¿tenía un executionTimeout debido al cual las solicitudes estaban fallando? ¿Qué configuración hizo que las solicitudes fallaran? –