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

ELB сообщает backend_status_code «0» для некоторых запросов.

Я нашел несколько странных записей в журналах ELB, которые не могу объяснить. Все они выглядят так (в формате JSON):

{
    "backend": "-",
    "backend_processing_time": "-1",
    "backend_status_code": 0,
    "client_ip": "XXX.XXX.XXX.XXX",
    "client_port": "52084",
    "elb": "ELB1-PROD",
    "elb_status_code": 504,
    "http_method": "POST",
    "http_version": "HTTP/1.1",
    "received_bytes": 16051,
    "request_processing_time": "-1",
    "request_uri": "https://example.com:443/example/",
    "response_processing_time": "-1",
    "sent_bytes": 0,
    "ssl_cipher": "ECDHE-RSA-AES128-GCM-SHA256",
    "ssl_protocol": "TLSv1.2",
    "timestamp": "2015-10-29T04:41:47.251500Z",
    "user_agent": "client/4.0"
}

например "backend_processing_time": "-1" или "backend_status_code": 0 кажутся действительно странными.

Есть идеи, что это могло значить? Я подозревал, что внутренние серверы были перегружены, но мы не испытали более высокой нагрузки, чем обычно, когда произошли эти ошибки, и все ошибки были вызваны одним и тем же IP-адресом клиента.

Когда ELB возвращает таймаут шлюза 504, это указывает на то, что балансировщик нагрузки закрыл соединение, потому что запрос не был завершен в течение периода тайм-аута простоя (согласно документам).

Таким образом, ELB не получил ответа в пределах лимита времени простоя, в результате чего соединение было прервано и клиенту был возвращен ответ 504. Зная, что внутренний запрос никогда не завершался, на самом деле имеет смысл backend_status_code является 0 и что backend_processing_time является -1. ELB не может ответить на то, чего не знает!