Nginx fastcgi cache HIT vs STALE

I have strange problem with nginx microcache. When nginx serve STALE content, it takes too long. My actual microacha part in config:

...
fastcgi_cache biznisto.sk;
fastcgi_cache_bypass $skip_cache;
fastcgi_cache_key "$scheme$request_method$host$request_uri$rt_session";
fastcgi_cache_valid 200 301 302 5m;
fastcgi_cache_use_stale updating error timeout invalid_header http_500;
fastcgi_cache_lock on;
fastcgi_cache_revalidate on;
fastcgi_cache_background_update on;
fastcgi_pass_header Set-Cookie;
fastcgi_pass_header Cookie;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
add_header X-Cache $upstream_cache_status;
...

Screens STALE - wait 565ms enter image description here HIT - wait 59ms enter image description here

Any suggestions? Спасибо

2
задан 11 April 2018 в 02:52
1 ответ

Директива fastcgi_cache_background_update позволяет обновлять просроченный элемент кэша, пока устаревший кешированный ответ возвращается клиенту.

Если, однако, ответ возвращается полностью, но обновление еще не завершено, оно задерживает последующие действия, включая обработку дополнительных запросов к тому же соединению и / или закрытие соединения.

Такое поведение гарантирует, что:

  • клиент не может наложить неконтролируемую нагрузку на сервер, при условии наличия различных ограничений, таких как limit_conn
  • , общая работа обычно лучше, а в худшем случае не хуже, чем без фонового обновления.

https://trac.nginx.org/nginx/ ticket / 1329

1
ответ дан 3 December 2019 в 12:33

Теги

Похожие вопросы