Re: Битые файлы в кеше при gzip ответах

2019-08-19 Пенетрантность Vladislavik
В общем, более менее разобрался, виноват был open_file_cache, интересная
ситуация с ним выходит:
у нас есть файл 10 кбайт, мы его запросили единожды и он попал в этот кэш.
(если срок жизни кэша большой) Далее файл изменился, стал 15 кбайт и nginx
при запросе файла отдает с диска уже измененный файл, НО обрезает его до
длины, данные о которой все еще лежат в open_file_cache (10 кбайт) в итоге
мы получаем обрезанный / не полный файл на выходе.

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

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

Re: Битые файлы в кеше при gzip ответах

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

On Mon, Aug 19, 2019 at 05:32:55PM -0400, Vladislavik wrote:

> chunked_transfer_encoding on;
> 
> Не может быть причиной?

Нет - как видно из ответа в кэше, используется Content-Length, 
chunked transfer encoding не используется вообще.  Не говоря уже о 
том, что эта директива со значением "on" не имеет смысла, это 
поведение по умолчанию.

> Файл никто не переписывает, лежит и никак не меняется не обновляется, а
> nginx порой отдает его обрезанным...

Опять же из заголовков ответов в кэше очевидно, что это не так:

Last-Modified: Sun, 18 Aug 2019 12:06:39 GMT
Last-Modified: Sun, 18 Aug 2019 13:49:45 GMT 

То есть у файла менялся не только размер, но и дата последнего 
изменения.  В файл явно кто-то лазил, как и чем - искать вам.

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

Re: Актуальна ли proxy cache path inactive=NNN между рестартами?

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

On Sun, Aug 18, 2019 at 07:04:32AM -0400, rihad wrote:

> У нас на некоторых серверах inactive стоит 90 дней, что будет если  nginx
> перезагрузить до этого времени, сохранится ли время последнего запроса к
> кешированному ресурсу? Я попытался сам разобраться по коду но там сложно.
> 
> file->accessed = now;
> 
> в ./src/core/ngx_open_file_cache.c
> 
> И потом в ngx_http_file_cache_update() не увидел что поле acessed пишется.
> Может в другом месте где-то?

Нет, при загрузке кэша с диска - в качестве времени последнего 
обращения будет использоватся время загрузки соответствующего 
элемента кэша.  Соответственно не имеет особого смысла 
использовать время inactive, превышающее среднее время между 
перезапусками nginx'а.

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

Re: Битые файлы в кеше при gzip ответах

2019-08-19 Пенетрантность Vladislavik
chunked_transfer_encoding on;

Не может быть причиной?
Файл никто не переписывает, лежит и никак не меняется не обновляется, а
nginx порой отдает его обрезанным...

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

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

Re: Битые файлы в кеше при gzip ответах

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

On Sun, Aug 18, 2019 at 11:12:31AM -0400, Vladislavik wrote:

> этот запрос был без gzip, файл каким-то образом nginx был отдан не
> полностью, с указанием размера 3492 вместо 3518, как это может быть? Файл
> лежит на диске,

Как уже говорилось - если файл отдаёт nginx, то наиболее вероятная 
причина - файл на диске кто-то переписывает по месту.  Если файл 
не меняется - это может быть какая-нибудь забытая синхронизация, 
которая просто копирует все файлы с другой машины / из другого 
каталога.  

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