nginx/1.13.4 64bit под CentOS7.
Редко, но регулярно выдаёт ошибку "cache file ... has too long header"
Прочёл всё, что написано по данному поводу:
1) https://forum.nginx.org/read.php?21,243579,243589#msg-243589
2) http://nginx.2469901.n2.nabble.com/cache-file-has-too-long-header-bug-td7594976.html
proxy_buffer_size установлен в 8k и не менялся несколько месяцев.
Сайтов кэшируется много, все настройки у всех одинаковые, но почти все ошибки происходят только у одного, причём не самого нагруженного. На некоторых файлах - больше одного раза, т.е. вариант со старыми кэш-файлами, созданными с другим proxy_buffer_size, отпадает.
Служебный заголовок с заголовком HTTP-ответа во всех файлах занимают меньше килобайта, проверял командой:
find /home/.nginx/cache/.edge/user98023/ -type f -printf "%p " -exec perl -e 'my $len = 0; while(<>) { last if /^[\r\n]*$/; $len += length } print "$len, $.\n"' '{}' ';'
Вопросы:
1) race condition при одновременном обновлении-чтении кэш-файла несколькими воркерами ещё не побеждён?
В данный момент это наш единственный подозреваемый.
2) Какие данные имеет смысл дополнительно распечатывать в http://hg.nginx.org/nginx/file/tip/src/http/ngx_http_file_cache.c#l578 для диагностики, кроме h->body_start и c->body_start?
К сожалению, ошибка происходит только на загруженных production, которые мало подходят для экспериментов.