Apache Bench: falla del protocolo de enlace SSL directamente relacionada con el nivel de concurrencia

12

Ejecuté algunas pruebas en ab y cuando uso un nivel de concurrencia de más de 155 obtengo lo siguiente:

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

Las solicitudes aún tienen éxito:

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

Lo he probado varias veces y el protocolo de enlace SSL solo falla una vez que la concurrencia supera los 155. ¿Alguien puede explicarme cómo podrían estar directamente relacionados?

C_B
fuente

Respuestas:

8

El protocolo de enlace SSL puede fallar cuando la conexión en general falla o se interrumpe, así como también debido a errores de SSL. También puede fallar si se agota debido a la falta de entropía disponible.

Lo más probable es que solo estés martillando demasiado el servidor. No hay suficiente información aquí para determinar qué está fallando precisamente.

La definición de éxito en esta prueba es extraña y sospechosa. Sin embargo, si la memoria funciona, el código de error 5 indica que el socket está cerrado. ¿Quizás la conexión se considere exitosa una vez que comience la negociación SSL, en lugar de después de que tenga éxito?

Falcon Momot
fuente
1
El error 5 (debería) ser un error IO. Pero los sockets openssl generalmente se construyen sobre sockets normales, por lo que no tengo idea de lo que eso realmente significa. Los enchufes normales no producen errores de E / S.
Matthew Ife
Lo hacen cuando están cerrados de forma remota, ¿no?
Falcon Momot
No, una escritura producirá EPIPE y una lectura devolverá 0 bytes.
Matthew Ife
Tampoco estoy seguro de que este sea un código de error que esté en el mismo dominio que los que podrían pasarse a strerror (), pero realmente no sé, ya que no he mirado la fuente.
Falcon Momot