Пакеты потеряны при подключении Zmq_Pu sh и Zmq_Pull - PullRequest
0 голосов
/ 09 мая 2020

Я работаю над проектом, в котором у меня есть несколько сокетов pu sh (созданных динамически), подключенных к одному вытяжному сокету. Здесь каждый сокет pu sh отправляет уникальный тип данных в опрашивающий сокет, а размер данных для каждого сообщения меньше 1000 байт, и каждый сокет pu sh отправляет от 20 000 до 30 000 таких сообщений. Во время пиковой нагрузки количество сокетов pu sh может увеличиваться до 100. Итак, здесь имеется 100 сокетов pu sh, подключаемых к одному приемнику PULL, и каждый сокет pu sh отправляет 20-30К сообщений размером почти 1000 байт. . Теперь на стороне приемника PULL я обрабатываю каждый из этих уникальных пакетов и помещаю их в соответствующую очередь, например: если у меня есть 50 сокетов PU SH, отправляющих данные, чем на стороне моего получателя, будет 50 очередей, обрабатывающих данные. Это необходимо, поскольку каждая очередь содержит уникальный набор данных, которые необходимо обрабатывать однозначно. Здесь у меня не может быть несколько приемников PULL, так как данные будут маршрутизироваться циклически, и один набор уникальных данных может go в другой, который мне не нужен.

Здесь Проблема, с которой я сталкиваюсь, заключается в том, что иногда я вижу, что не получаю все данные, отправленные сокетами PU SH. Я считаю, что происходит некоторая потеря данных. Чтобы контролировать это, я установил HWM с обеих сторон. Я пробовал следующие комбинации: 1) SNDHWM установлен на 100 и RCVHWM установлен на 100 2) SNDHWM установлен на 10 и RCVHWM установлен на 10 3) SNDHWM установлен на 10 и RCVHWM установлен на 100

Помимо вышеуказанных конфигураций Я также установил потоки контекста на стороне отправителя равным 3, а на стороне получателя - равным 1. Здесь на стороне отправителя создается только один контекст, из которого несколько сокетов pu sh создаются динамически, как в случае, когда данные получает.

Но во всех этих комбинациях я обнаружил, что некоторые пакеты отсутствуют.

Может ли кто-нибудь посоветовать мне, какие параметры мне нужно настроить в ZMQ, чтобы я не закончил в потере пакетов и во всех пакетах, которые я получаю на стороне получателя. Кроме того, я почему-то считаю, что обработка на моей стороне приемника может быть медленной, из-за чего это могло произойти.

Пожалуйста, напишите здесь свои мысли и направьте меня, если возможно.

...