Sono in esecuzione test di carico per la mia applicazione. Ho due server: uno con la mia applicazione e un server fittizio che è responsabile per ottenere le mie risposte.ottenere NoHttpResponseException per il test di carico
Nel mio server fittizio Ho il seguente codice JSP:
<%@ page import="java.util.Random" %>
<%@ page language="java" %>
<%@ page session="false" %>
<%
String retVal = "some json string";
Thread.sleep(50);
%>
sto correndo l'applicazione con tomcat7. Il mio pool di connessioni server.xml (in entrambi i server) si presenta come:
<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" />
il codice Java sto correndo dai server è:
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);
}
Io corro Jmetter con 50 thread concorrenti (senza un anello) e ottenere un sacco di eccezioni in questo modo:
org.apache.http.NoHttpResponseException The target server failed to respond
Mentre io corro solo 5 o 10 thread simultanei tutto funziona bene.
Potresti per favore segnalarmi cosa potrebbe esserci di sbagliato nel mio setup? Per quanto ne so, non vedo errori per le 50 richieste di thread simultanee.
Julias, questo è molto utile! Grazie mille per aver pubblicato la tua soluzione. È esattamente quello che sto cercando. – trillions
Anche la tua soluzione mi ha aiutato. Nel mio caso, la NoHttpResponseException si verificava solo occasionalmente quando avevo attivato l'anti-virus. L'anti-virus esegue sempre delle scansioni quando viene inviata una richiesta http e occasionalmente richiede un po 'più di tempo, causando il fallimento della richiesta. – Seigo
@Seigo - Capisco che questo è un thread vecchio, ma hai avuto un timeout di esecuzione a causa del quale le richieste stavano fallendo? Quale impostazione ha causato il fallimento delle richieste? –