Holen Sie sich NoHttpResponseException zum Testen der Last

Ich führe Auslastungstests für meine Anwendung durch. Ich habe zwei Server: einen mit meiner Anwendung und einen Dummy-Server, der für die Beantwortung verantwortlich ist.

In meinem Dummy-Server habe ich den folgenden JSP-Code:

<code><%@ page import="java.util.Random" %>
<%@ page language="java" %>
<%@ page session="false" %>
<%
   String retVal = "some json string";
   Thread.sleep(50);
%>
</code>

Ich starte die Anwendung mit Tomcat7. Mein server.xml-Verbindungspool (auf beiden Servern) sieht folgendermaßen aus:

<code><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" />
</code>

Der Java-Code, den ich auf den Servern ausführe, lautet:

<code> 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);
    }
</code>

Ich starte Jmetter mit 50 gleichzeitigen Threads (ohne Schleife) und bekomme viele Ausnahmen wie diese:

<code>org.apache.http.NoHttpResponseException The target server failed to respond 
</code>

Während ich nur 5 oder 10 Threads gleichzeitig ablaufe, funktioniert alles in Ordnung.

Könnten Sie mir bitte raten, was an meinem Setup falsch sein könnte? Nach meinem Verständnis werden für die 50 gleichzeitigen Thread-Anforderungen keine Fehler angezeigt.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage