Apache Bench: SSL-Handshake schlägt fehl, was direkt mit der Parallelität zusammenhängt

12

Ich habe einige Tests auf ab ausgeführt und wenn ich eine Parallelitätsstufe von über 155 verwende, erhalte ich Folgendes:

SSL handshake failed (5).
SSL handshake failed (5).
SSL handshake failed (5).
SSL handshake failed (5).
SSL handshake failed (5).
SSL handshake failed (5).
SSL handshake failed (5).
SSL handshake failed (5).
SSL handshake failed (5).
Completed 100 requests
Completed 200 requests
Finished 200 requests

Die Anfragen sind weiterhin erfolgreich:

Concurrency Level:      200
Time taken for tests:   14.481 seconds  
Complete requests:      200
Failed requests:        0

Ich habe es mehrfach getestet und der SSL-Handshake schlägt erst dann fehl, wenn die Nebenläufigkeit 155 überschreitet. Kann mir jemand erklären, wie sie direkt zusammenhängen könnten?

C_B
quelle

Antworten:

8

Der SSL-Handshake kann fehlschlagen, wenn die Verbindung im Allgemeinen ausfällt oder unterbrochen wird, sowie aufgrund von SSL-Fehlern. Es kann auch fehlschlagen, wenn das Zeitlimit aufgrund eines Mangels an verfügbarer Entropie überschritten wird.

Wahrscheinlich hämmern Sie den Server nur zu fest. Hier gibt es nicht genügend Informationen, um festzustellen, was genau ausfällt.

Die Definition des Erfolgs in diesem Test ist ungerade und suspekt. Wenn jedoch Speicher belegt ist, zeigt der Fehlercode 5 an, dass der Socket geschlossen ist. Wird die Verbindung möglicherweise nach dem Start der SSL-Aushandlung als erfolgreich gewertet, anstatt nach dem Erfolg?

Falcon Momot
quelle
1
Fehler 5 sollte ein E / A-Fehler sein. Aber openssl-Sockets werden normalerweise auf normalen Sockets aufgebaut, sodass ich keine Ahnung habe, was das wirklich bedeutet. Normale Sockets erzeugen keine E / A-Fehler.
Matthew Ife
Sie tun es, wenn sie aus der Ferne geschlossen sind, nicht wahr?
Falcon Momot
Nein, ein Schreibvorgang erzeugt EPIPE und ein Lesevorgang gibt 0 Bytes zurück.
Matthew Ife
Ich bin mir auch nicht sicher, ob dies ein Fehlercode ist, der sich in derselben Domäne befindet wie die, die an strerror () übergeben werden könnten, aber ich weiß es wirklich nicht, da ich nicht auf die Quelle geschaut habe.
Falcon Momot