#varnish #varnish-vcl #varnish-4
#varnish #varnish-vcl #varnish-4
Вопрос:
На моем веб-сайте поток запросов приведен ниже-
AWS CloudFront -> ELB -> Varnish 4.0.3 -> NginX (обратный прокси) -> ELB -> Drupal7
Работает: Обычный поток работает так, как ожидалось.
Проблема: когда я запускаю нагрузочное тестирование на своем сайте, один и тот же запрос поступает на сервер Drupal несколько раз. например, мой JMeter засыпал 500 обращениями к http://website/index.php , ~ 50% запросов попадают на сервер Drupal.
Ожидание: Varnish должен удерживать все тот же запрос, пока не ответит первый.
Наблюдение: Varnish отправляет все те же запросы на серверную часть, пока не придет ответ на первый запрос
Если кто-нибудь реализовал такую функциональность, пожалуйста, поделитесь
Ответ №1:
Это странно, потому что Varnish должен содержать эти запросы, как указано в документе:https://www.varnish-cache.org/docs/4.0/users-guide/vcl-grace.html
Возможно, первый запрос, который поступает на серверную часть, заканчивается некэшируемым ответом, который получает «HIT-FOR-PASS» (последующие те же запросы не попадут в кэш, а будут извлечены непосредственно из серверной части).
Каков вывод из varnishlog, вы отправляете специальный заголовок, который предотвращает кэширование?
Комментарии:
1. Спасибо за быстрый ответ! Мой _hit ниже-
2. sub vcl_hit { if (obj.ttl >= 0s) { # Чистое, неподдельное попадание, доставить его обратно (deliver); } if (std.healthy(req.backend_hint)) { if (obj.ttl 10 секунд > 0 секунд) { return (deliver); } else { return (fetch); } } else { if (obj.ttl obj.grace > 0 секунд) { return (deliver); } else { return (fetch); } } return (fetch); } ——- 1. Правильно ли это 2. Как проверять запросы, которые находятся на удержании, пока Varnish получает ответ из серверной части
3. Это ваш vcl (конфигурация varnish), я хотел бы увидеть журналы varnish. Это первое, на что следует обратить внимание при устранении неполадок в varnish. Вы можете видеть их в режиме реального времени с помощью
varnishlog
или истории с помощьюvarnishlog -d
. Смотрите varnish-cache.org/docs/4.0/users-guide/operation-logging.html