Слишком много подключений RPC приводят к закрытию веб-сокета.

Несколько серверов подключены через RPC. Бывают случаи, когда приложения в ОС имеют слишком много вызовов RPC, что приводит к закрытию сети. Каков наилучший способ отладки или настройки моей ОС?

"msg":"sending ping message: write tcp 127.0.0.1:36802->127.0.0.1:1234: use of closed network connection"
"msg":"handle me:write tcp4 127.0.0.1:1234->127.0.0.1:56244: write: broken pipe"
-1
задан 21 September 2021 в 07:13
1 ответ

Вы не упомянули, какие действия по устранению неполадок вы предприняли. чтобы прийти к выводу, что это связано со слишком большим количеством вызовов RPC или какими-либо подробностями о состоянии сетевых подключений в момент сбоя. Я предполагаю, что эта ошибка возникает из-за исчерпания портов из-за отсутствия пула соединений.

Чтобы проверить исчерпание портов, используйте netstat для получения состояния портов на сервере. Если в списке указано чрезмерное количество портов, у вас, вероятно, проблема с исчерпанием портов.

Пулы соединений gRPC создаются автоматически, однако плохо написанный код может помешать правильному функционированию из-за чрезмерного создания новых каналов gRPC вместо повторного использования существующих. Я ссылался на документацию Microsoft, поскольку в ней есть описание того, как создание новых каналов приводит к созданию новых соединений HTTP/2.

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

Рекомендации по повышению производительности при использовании gRPC.

Канал gRPC следует повторно использовать при совершении вызовов gRPC. Повторное использование канала позволяет мультиплексировать вызовы через существующее соединение HTTP/2.

Если для каждого вызова gRPC создается новый канал, время, необходимое для выполнения, может значительно увеличиться.Для каждого вызова потребуется несколько сетевых циклов между клиентом и сервером для создания нового соединения HTTP/2:

Рекомендации по производительности

Всегда повторно используйте заглушки и каналы, когда это возможно.

При этом вы можете рассматривать сокеты домена Unix, а не сокеты TCP. Если эти приложения в конечном итоге будут работать распределенно на нескольких машинах, вам следует придерживаться сокетов TCP. Если они всегда будут работать на одном и том же компьютере, вам следует рассмотреть сокеты домена Unix.

Как создать службу GRPC через локальный сокет, а не через inet в scala/java

Сервер gRPC в Python с сокетом домена Unix

0
ответ дан 1 October 2021 в 07:23

Теги

Похожие вопросы