2015-07-07 2 views
1

У меня есть 2 лаковых сервера, расположенных в цифровом океане в районе NY2. И у меня есть два веб-сервера, которые сидят в Amazon EC2 us-east-1b.лак 504 тайм-аут шлюза

Лак находится в версии 3.05, а apache работает на веб-серверах в версии 2.4.6. И я обнаружил, что каждая загружаемая страница вызывает ошибку «504 Gateway Time-out» перед загрузкой страницы. Иногда, если вы нажмете страницу на второй раз, она снова даст ошибку тайм-аута.

Это раздражающая ошибка, которую я хотел бы исправить. Я попытался решить эту проблему, установив таймауты на действительно высокий уровень в конфигурации лака. Это остановило 503 ошибки, которые я получал, но теперь 504 ошибки являются основной проблемой.

У меня есть очень простой файл VCL-лака. Вот оно:

backend web1 { 
    .host = "10.10.10.25"; 
    .port = "80"; 
    .connect_timeout = 1200s; 
    .first_byte_timeout = 1200s; 
    .between_bytes_timeout = 1200s; 
    .max_connections = 70; 
    .probe = { 
    .request = 
    "GET /healthcheck.php HTTP/1.1" 
    "Host: wiki.example.com" 
    "Connection: close"; 
    .interval = 10m; 
    .timeout = 60s; 
    .window = 3; 
    .threshold = 2; 
    } 
} 

backend web2 { 
    .host = "10.10.10.26"; 
    .port = "80"; 
    .connect_timeout = 1200s; 
    .first_byte_timeout = 1200s; 
    .between_bytes_timeout = 1200s; 
    .max_connections = 70; 
    .probe = { 
    .request = 
    "GET /healthcheck.php HTTP/1.1" 
    "Host: wiki.example.com" 
    "Connection: close"; 
    .interval = 10m; 
    .timeout = 60s; 
    .window = 3; 
    .threshold = 2; 
    } 
} 


director www round-robin { 
    { .backend = web1; } 
    { .backend = web2; } 
} 


sub vcl_recv { 

    if (req.url ~ "&action=submit($|/)") { 
     return (pass); 
    } 

    set req.backend = www; 
    return (lookup); 
} 

sub vcl_fetch { 
     set beresp.ttl = 3600s; 
     set beresp.grace = 4h; 
     return (deliver); 
} 



sub vcl_deliver { 
    if (obj.hits> 0) { 
     set resp.http.X-Cache = "HIT"; 
    } else { 
     set resp.http.X-Cache = "MISS"; 
    } 
} 

И это ошибка я получаю в журнале лаковой когда страница дает 504 ошибку:

10 TxHeader  c Age: 1 
    10 TxHeader  c Via: 1.1 varnish 
    10 TxHeader  c Connection: close 
    10 TxHeader  c X-Cache: MISS 
    10 Debug  c Write error, retval = -1, len = 75311, errno = Connection reset by peer 
    10 ReqEnd  c 1481957120 1436230882.856483936 1436230941.208484650 0.000118494 58.351872206 0.000128508 
    10 StatSess  c 54.88.194.254 52474 58 1 1 0 0 1 565 74746 

Я проверил, что я могу свернуться файл Healthcheck после эта ошибка возникает, и кажется, что я могу:

[[email protected]:/etc/varnish] #curl http://wiki.example.com/healthcheck.php 
good 

это странная установка, но это будет несколько недель, прежде чем мы будем иметь одобрение установки лак в в EC2. Это настройка, которую я унаследовал, и вам нужно попытаться сделать ее работоспособной в течение следующих нескольких недель.

Буду признателен за любую помощь и понимание, которые вы можете предоставить.

ответ

2

"ERRNO = сброс соединение однорангового"

равный является переустановка соединения. Этого не происходит в лаке. Отладка партнера.

0

Я думаю, вам нужно переместить оператор set req.backend = www; в первую строку vcl_recv.

Теперь вы возвращаете проход, но не настроен бэкэнд, поэтому я предполагаю, что тайм-ауты лака ждут, когда бэкэнд не существует.

Смежные вопросы