Назад | Перейти на главную страницу

Случайные 502 ошибки с Varnish

У меня лак 4 перед веб-сервером Apache. Все хорошо, за исключением случайных ошибок 502.

Странно то, что в файле varnishlog для этой ошибки нет ничего! (все остальные запросы записываются)

Мои параметры: VARNISH_MIN_THREADS = 50 VARNISH_MAX_THREADS = 1000 VARNISH_THREAD_TIMEOUT = 120

Что я могу сделать, чтобы это исправить?

Мой default.vcl:

vcl 4.0;

backend default {
  .host = "127.0.0.1";
  .port = "8055";
}

backend php53 {
  .host = "127.0.0.1";
  .port = "8053";
}

sub vcl_recv {
  # Compatiblity with Apache log
  if (req.http.X-Forwarded-For) {
    set req.http.X-Forwarded-For = client.ip;
  } else {
    set req.http.X-Forwarded-For = client.ip;
  }

  if (
    req.http.Host ~ "site1" ||
    req.http.Host ~ "site2")
  {
    set req.backend_hint = php53;
  }

  if (req.http.Host ~ "mainsite" ){
    if (req.method == "POST") {
       return (pipe);
    }
    if (req.method == "GET" && (req.url ~ "^/admin")) {
       return (pass);
    }
  }

  if (req.method != "GET" && req.method != "HEAD")
  {
    return (pass);
  }

  if (req.url ~ "(?i)\.(jpeg|jpg|png|gif|ico)$") {
    unset req.http.Cookie;
    return (hash);
  } else {
    return (pass);
  }
}
sub vcl_backend_response {
   if (beresp.http.Content-Length !~ "[0-9]{7,10}") {
     return(deliver);
   }
}

У меня 502 ошибки на "основном сайте" (электронная торговля в prestashop с большим количеством изображений)

Моя текущая статистика:

MAIN.uptime 151353 1,00 Время работы дочернего процесса MAIN.sess_conn 59309 0,39 Сеансы приняты

MAIN.sess_drop 0 0.00 Сеансы прерваны

MAIN.sess_fail 0 0.00 Сбои при приеме сеанса

MAIN.backend_conn 24076 0.16 Backend conn. успех

MAIN.backend_unhealthy 0 0.00 Соединение с серверной частью. не пытался

MAIN.backend_busy 0 0.00 Соединение с сервером. слишком много

MAIN.backend_fail 85 0.00 Соединение с сервером. неудачи

MAIN.backend_reuse 53606 0,35 Соединение с сервером. повторно использует

MAIN.backend_toolate 11249 0,07 Соединение с серверной частью. был закрыт

MAIN.backend_recycle 64856 0,43 Соединение с серверной частью. перерабатывает

MAIN.backend_retry 0 0.00 Соединение с бэкэнд. повторить попытку

ГЛАВНАЯ. Резьбы 100. Общее количество потоков

MAIN.threads_created 108 0.00 Темы созданы

MAIN.threads_destroyed 8 0.00 Потоки уничтожены

MAIN.threads_failed 0 0.00 Не удалось создать поток

MAIN.busy_sleep 3 0.00 Количество запросов, отправленных в спящий режим при занятости objhdr

MAIN.busy_wakeup 3 0.00 Количество запросов, просыпаемых после сна при занятом objhdr

MAIN.sess_queued 11 0.00 Сессии в очереди для потока

ps aux | grep -i varnish | grep -v grep:

root     22319  0.0  0.5 121896 84060 ?        SLs  12:21   0:00 /usr/sbin/varnishd -P    /var/run/varnish.pid -a :80 -f /etc/varnish/default.vcl -T 127.0.0.1:6082 -t 120 -p thread_pool_min=50 -p thread_pool_max=1000 -p thread_pool_timeout=120 -u varnish -g varnish -S /etc/varnish/secret -s malloc,1G
varnish  22321  0.4  0.5 321348 92604 ?        Sl   12:21   0:00 /usr/sbin/varnishd -P /var/run/varnish.pid -a :80 -f /etc/varnish/default.vcl -T 127.0.0.1:6082 -t 120 -p thread_pool_min=50 -p thread_pool_max=1000 -p thread_pool_timeout=120 -u varnish -g varnish -S /etc/varnish/secret -s malloc,1G

Вы просматривали журнал ошибок apache для "основного сайта"?

вставить вывод:

ps aux | grep -i varnish | grep -v grep

И посмотрите, не велик ли ваш размер malloc для обслуживания большого размера содержимого

Пытаться: beresp.http.Content-Length !~ "keep this size small" (если это так) Примечание: измените это на регулярное выражение, чтобы удовлетворить требованиям ur, где говорится, что этот размер должен быть небольшим

и проверьте, все ли вы получаете эту ошибку,