Apache Bench: сбой рукопожатия SSL напрямую связан с уровнем параллелизма

12

Я провел несколько тестов на ab и, когда я использую уровень параллелизма более 155, я получаю следующее:

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

Запросы все еще успешны:

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

Я проверял это много раз, и рукопожатие SSL не срабатывает только тогда, когда параллелизм превышает 155. Может кто-нибудь объяснить мне, как они могут быть связаны напрямую?

C_b
источник

Ответы:

9

Рукопожатие SSL может произойти сбой, когда соединение в целом не удается или прерывается, а также из-за ошибок SSL. Он также может потерпеть неудачу, если истечет время ожидания из-за отсутствия доступной энтропии.

Скорее всего, вы просто слишком сильно забиваете сервер. Здесь недостаточно информации, чтобы определить, что именно не работает.

Определение успеха в этом тесте странно и подозрительно. Однако, если память служит, код ошибки 5 указывает, что сокет закрыт. Возможно, соединение считается успешным после начала согласования SSL, а не после него?

Сокол Момот
источник
1
Ошибка 5 (должна) быть ошибкой ввода-вывода. Но сокеты openssl обычно создаются поверх обычных сокетов, поэтому я понятия не имею, что это означает на самом деле . Обычные сокеты не вызывают ошибок ввода-вывода.
Мэтью Ифе
Они делают, когда они закрыты удаленно, не так ли?
Сокол Момот
Нет, запись произведет EPIPE, а чтение вернет 0 байтов.
Мэтью Ифе
Я также не уверен, что это код ошибки, который находится в том же домене, что и код, который может быть передан strerror (), но я действительно не знаю, так как не посмотрел на источник.
Сокол Момот