Re: Проксирование, буфер, лаги

2019-08-07 Пенетрантность rihad
Спасибо за ответ. Буферизация конечно включена, мне просто показалось что
желаемое поведение (одновременный прием от апстрима и отправка клиенту)
происходит только при выключенной буферизации. Размер буфера в несколько
десятков кб роли не играет, это почти одновременно. У нас в основном
картинки по несколько сот кб.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,285149,285155#msg-285155

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Проксирование, буфер, лаги

2019-08-07 Пенетрантность Maxim Dounin
Hello!

On Wed, Aug 07, 2019 at 12:56:18PM -0400, rihad wrote:

> Просто эта цитата в доках на английском говорит, что такое бывает при
> выключенном буферинге.

Приведённая цитата говорит, что бывает при _выключенной_ 
буферизации.  Что бывает при включённой - написано в предыдущем 
абзаце.

Принципиальный момент, на самом деле, приблизительно один:

- В случае выключенной буферизации отправка будет происходить 
  сразу после получения данных от бэкенда.  Включая сброс буферов 
  всяких других уровней, как то gzip или SSL.  Если же буферизация 
  включена - nginx будет ждать заполнения очередного буфера, и 
  только после его заполнения будет пытаться отправить его 
  содержимое клиенту.  Поэтому буферизированное проксирование 
  эффективнее, но может быть непригодно, если HTTP-ответы 
  используются для потоковой отправки данных с небольшой скоростью 
  (и тогда буферизацию имеет смысл отключать).

Кроме того, стоит помнить, что:

- В случае выключенной буферизации nginx не будет пытаться 
  прочитать целиком ответ от бэкенда, а вместо этого прекратит 
  чтение, как только у него закончится буфер и не будет 
  возможности отправить содержимое этого буфера клиенту.  В случае 
  со включённой буферизацией - похожего поведения можно 
  добиться, установив proxy_max_temp_file_size в 0 (с точностью до 
  того, что при этом будет используется не один буфер, а много).

- При выключенной буферизации невозможно сохранения ответа на 
  диск, и соответственно не будет работать кэширование и 
  proxy_store.

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Проксирование, буфер, лаги

2019-08-07 Пенетрантность rihad
Просто эта цитата в доках на английском говорит, что такое бывает при
выключенном буферинге.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,285149,285153#msg-285153

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Проксирование, буфер, лаги

2019-08-07 Пенетрантность Andrey Kopeyko

rihad писал 2019-08-07 17:09:


Меня вот это немного смутило:

"When buffering is disabled, the response is passed to a client
synchronously, immediately as it is received. nginx will not try to 
read the

whole response from the proxied server. "

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering

Получается когда buffering включен, то наоборот, контент читается 
полностью

перед началом отдачи клиенту.


Нет.
Ответ начинает отдаваться клиенту сразу по получении его от бэкенда. 
Зачем ждать конца?


Это 2 независимых процесса, работающих с максимально возможной скоростью
* ответ от бэкенда вычитывается быстро
* полученный от бэкенда ответ - передаётся клиенту по мере готовности 
клиента его принять.



--
Best regards,
Andrey A. Kopeyko 
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Проксирование, буфер, лаги

2019-08-07 Пенетрантность rihad
Меня вот это немного смутило:

"When buffering is disabled, the response is passed to a client
synchronously, immediately as it is received. nginx will not try to read the
whole response from the proxied server. "

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering

Получается когда buffering включен, то наоборот, контент читается полностью
перед началом отдачи клиенту.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,285149,285150#msg-285150

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Проксирование, буфер, лаги

2019-08-07 Пенетрантность rihad
Допустим если включено кеширование через proxy_cache, а также включено
proxy_buffering (по умолчанию). Что происходит когда клиент запрашивает
ресурс которого нет в кеше? Он сначала полностью скачивается из апстрима,
кешируется, и только потом начинает отдаваться клиенту? И если таких уровней
апстримов 2 или более, то лаг получения контента клиентом увеличивается
грубо говоря в 2 или более раз?

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,285149,285149#msg-285149

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Иногда в логах проскакивает SSL write() failed

2019-08-07 Пенетрантность Maxim Dounin
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 
# 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 mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Не передается Last Modified

2019-08-07 Пенетрантность rvk
Разобрался. Оказалось далеко в коде этот заголовок устанавливался на текущую
дату.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,285137,285139#msg-285139

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru