Рейтинг:-1

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

флаг mx

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

"msg":"отправка сообщения ping: запись tcp 127.0.0.1:36802->127.0.0.1:1234: использование закрытого сетевого подключения"
«msg»: «обработайте меня: напишите tcp4 127.0.0.1:1234->127.0.0.1:56244: напишите: сломанная труба»
Doug avatar
флаг in
Вы просите дать точный и подробный ответ, но в то же время даете очень мало деталей для вопроса. gRPC обычно используется при разработке приложений, поэтому вопрос, вероятно, следует перенести в Stack Overflow.
Shervin Ivari avatar
флаг mx
Запрос @Doug RPC является чем-то общим, но, возможно, причиной являются некоторые ограничения в протоколе TCP. Программа выдает мне ошибки. Когда я слежу за ресурсами, все кажется в порядке, и я думаю, что это проблема с операционной системой. Если я могу найти полезные журналы на стороне ОС, пожалуйста, укажите мне на это
Doug avatar
флаг in
Да, это что-то общее, поэтому вам нужно быть конкретным. Вы пометили RPC и gRPC, так какой из них использует программа? Является ли эта программа чем-то обычным, для которого доступен исходный код, или разработана собственными силами? Какие ресурсы вы смотрели, например, что показывает netstat в момент ошибки? Без какой-либо дополнительной информации я могу только высказать предположение, что это плохо написанное пользовательское приложение gRPC, которое необходимо изменить для надлежащего использования каналов. Я могу придумать множество других решений, но без информации я не могу выбрать, какое из них дать вам.
Рейтинг:0
флаг in

Вы не упоминаете, какие действия по устранению неполадок вы предприняли, чтобы прийти к выводу, что это связано со слишком большим количеством вызовов 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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.