Сбой ZMQ при отправке больших блоков данных по локальной сети

ну в основном у меня есть одна главная система и 3 подчиненных системы. Я использовал фазу запроса/ответа для отправки контента трем моим клиентским системам, поскольку он по своей сути решает мою проблему разделения данных. После отправки контента на 3 мои клиентские системы я закрываю сокет, который отвечал за топологию REQ/REP, и создаю еще одну группу сокетов, которые соединяются с отдельными подчиненными системами, чтобы получать контент со всех 3 систем. Я запустил весь код на локальном хосте, у меня не было никаких проблем, и все прошло гладко, даже когда я пытался отправить 40 МБ наборов данных из одной из клиентских систем в основную систему.

Проблема в том, что я попытался реализовать это через локальную сеть в своей лаборатории.

  1. Фаза REQ/REP проходит гладко, поэтому в основном все клиентские системы получают наборы данных для работы.

  2. Индивидуальная ПАРА с клиентом терпит неудачу, когда я пытаюсь обработать большие наборы данных (например, 40 МБ, которые я не считаю большими, поскольку я загрузил содержимое в словарь, а размер объекта словаря достиг 24 МБ), он как бы задыхается, а для некоторых причина не обрабатывается.

Я понятия не имею, почему он ведет себя иначе в локальной сети, чем в моей системе.

Системы, которые я использую в локальной сети, представляют собой двухъядерные 64-битные процессоры AMD с 2 ГБ ОЗУ (все 4 системы).

Если вы заинтересованы в запуске кода:

Код главной системы: http://codepad.org/5uVCEb42

Salve1: http://codepad.org/LNmi9vu2

Slave2: http://codepad.org/0vmEAJYc (этот берет 40 МБ содержимого из файла и, наконец, передает Основная система)

Slave3: http://codepad.org/d565lgiv


person Rahul    schedule 28.03.2011    source источник


Ответы (1)


Сокеты PAIR не переподключаются автоматически, поэтому их не рекомендуется использовать в локальной сети.

person Pieter Hintjens    schedule 29.03.2011
comment
REQ-REP. Когда вам нужно отправить большой кусок данных, ЗАПРОСИТЕ разрешение. REPly предложит вам продолжить, а затем вы сможете ЗАПРОСИТЬ подтверждение. Затем получатель ОТВЕЧАЕТ, что все прошло нормально. - person Michael Dillon; 01.07.2011
comment
Заставьте этот первый REQ отправить количество ожидаемых байтов и контрольную сумму. - person Michael Dillon; 01.07.2011