В последнее время бэкэнд моего приложения возвратил повышенную частоту ошибок 502.
Для контекста, сервер находится за Amazon Elastic Load Balancer и запускает Dropwizard (для справки вот документация по настройке Dropwizard ).).
Я перехватил пакет для запроса 502 и увидел следующий шаблон:
- ELB -> Сервер [PSH, ACK]
- Сервер -> ELB [ACK]
- Сервер -> ELB [FIN, ACK]
- ELB -> Сервер [FIN, ACK]
- Сервер-> ELB [ACK]
Единственное, что я могу вывести из этого потока tcp, это то, что поток-акцептор принял запрос (таким образом, ACK в 2) и не смог ничего с ним сделать (таким образом FIN, ACK в 3).Мы пытались связываться с acceptorThreads
, idleTimeout
и даже с acceptQueueSize
(последнее основано на отличном сообщении в блоге, описывающем аналогичную проблему ), но все безрезультатно.Наши метрики активных запросов показывают, что мы даже не близки к насыщению пула, поэтому для обработки этого запроса должен быть доступный поток.Любые идеи о том, где еще искать?