У меня лак 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, где говорится, что этот размер должен быть небольшим
и проверьте, все ли вы получаете эту ошибку,