Re: Иногда в логах проскакивает SSL write() failed
Maxim Dounin
mdounin на mdounin.ru
Ср Авг 7 13:12:08 UTC 2019
Hello!
On Mon, Aug 05, 2019 at 12:14:49PM -0400, grey wrote:
> Приветствую всех.
>
>
> Прикрутил к одному сайту защищенный протокол. Не сразу заметил, что во время
> наплыва посетителей сайт стал сильно тормозить, а в логах появляется
> ошибка:
>
> 2019/08/05 17:32:57 [crit] 1832#2988: *131089 SSL_write() failed (10053:
> Программа на вашем хост-компьютере разорвала установленное подключение)
> while sending response to client, client: 5.18.*.*, server: ***.ru, request:
> "GET /logo.jpg HTTP/1.1", upstream: "http://127.0.0.1:81/logo.jpg", host:
> "www.***.ru"
>
> Версия nginx под Windows последняя 1.17.2. Сервер физический, но слабенький.
> Если отключить шифрование, то все летает.
> upstream: "http://127.0.0.1:81" - это Апач. Может не хватает ресурсов
> процессора на шифрование трафика или я где-то накосячил?
Если я правильно понимаю, такая ошибка может (и должна) возникать,
если клиент закрывает соединение в процессе получения ответа.
Уровень логгирования в данном случае завышен в случае
SSL-соединений, так как SSL-код не учитывает особенности виндов.
Какой-то такой патч должен проблему закрыть, снизив уровень
логгирования до стандартного в подобных ситуациях:
# HG changeset patch
# User Maxim Dounin <mdounin at mdounin.ru>
# Date 1565182777 -10800
# Wed Aug 07 15:59:37 2019 +0300
# Node ID 50a68c37eb3b399aca25ffa06527f263d1961e07
# Parent fcd92ad76b7bb04b46c4b8fdfe14b6065acadf7d
SSL: lowered log level for WSAECONNABORTED errors on Windows.
Winsock uses ECONNABORTED instead of ECONNRESET, for normal connections
this is already handled since baad3036086e.
Reported at
http://mailman.nginx.org/pipermail/nginx-ru/2019-August/062363.html.
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -2814,6 +2814,9 @@ ngx_ssl_connection_error(ngx_connection_
if (sslerr == SSL_ERROR_SYSCALL) {
if (err == NGX_ECONNRESET
+#if (NGX_WIN32)
+ || err == NGX_ECONNABORTED
+#endif
|| err == NGX_EPIPE
|| err == NGX_ENOTCONN
|| err == NGX_ETIMEDOUT
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru