@sheldygg

Как найти место, где возникают проблемы с TCP, TCPOFOQueue?

В своем проекте я использую NATS JetStream, использую публикацию для потоковой передачи rps-запросов, это значит, что клиент будет ждать ответа от сервера, но часто возникает ошибка тайм-аута, в чем проблема, не понятно.

Я начал собирать метрики с помощью node_exporter и просматривать их в Grafana. На панели ошибок TCP вы можете увидеть множество ошибок со следующим описанием: TCPOFOQueue — уровень TCP получает пакет, не соответствующий порядку, и у него достаточно памяти, чтобы поставить его в очередь.
66ee827167f16553632050.png

Более того, эти ошибки совпадают по времени с ошибками, которые возникают в моем приложении.

Не могли бы вы подсказать, где копать, чтобы найти и устранить эту проблему?

Я отправляю обычный запрос через клиент Python для NATS и получаю исключение
nats: timeout

await connection.request(
    message=b"some_message",
    subject="order.cancel",
    timeout=1
)

Сервисы задеплоины в докер контейнеры с сетью хоста.

Я думаю, проблема не в Nats Server или VPS, потому что я перазвернул, проблема все еще происходит. До переустановки VPS я пытался подключиться к Nats Server с моего локального ПК и отправлять запросы, иногда я получаю таймауты :) НО после переустановки VPS я пытаюсь сделать то же самое и не получаю таймауты и не вижу ошибок в графике Grafana (я делаю ~100 rpc)
После этого можно сделать вывод, что проблема не в nats-py (я думал, что отправка большого количества сообщений одновременно сопровождается ошибкой в ​​реализации nats для python)
Теперь я еще больше запутался
  • Вопрос задан
  • 118 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы