Перекресток Недостаточно памяти, когда паб работает быстрее, чем саб

Я делал паб&суб тест с автобаном-cpp. Тем не менее, я обнаружил, что когда вы публикуете некоторые данные с частотой, превышающей скорость, которую может потреблять подконечная точка, это приведет к тому, что маршрутизатор (кроссбар) кеширует некоторые данные, и использование памяти увеличивается. В конце концов, маршрутизатор израсходует всю память и будет уничтожен ОС.

Например

издатель:

while(1)
{
session->publish("com.pub.test",std::make_tuple(std::string("hello, world")) );
std::this_thread::sleep_for(std::chrono::seconds(1));  // sleep 1s
}   // pub a string every seconds

абонент:

void topic1(const autobahn::wamp_event& event)
{
try
{
auto s = event.argument<std::string>(0);
std::cerr << s << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(2)); //need 2s to finish the job
}
catch (std::exception& e)
{
std::cerr << e.what() << std::endl;
}
}
main()
{
...
session>subscribe("com.pub.test", &topic1);
...
}   // pub runs faster than the sub can consume

После нескольких часов:

2016-01-7 10:11:32+0000 [Controller  16142] Worker 16145: Process connection gone (A process has ended with a probable error condition: process ended by signal 9.)

ГПББ:

Out of memory: Kill process 16145(Crossbar.io Wor) score 4 or sacrifice child

Мои вопросы:

  • Это нормально (использовать всю память и быть убитым ОС)?
  • Или есть какие-либо параметры конфигурации могут быть установлены для ограничения использования памяти?

Я нашел похожую проблему, см ссылку https://github.com/crossbario/crossbar/issues/48

информация о системе: Ubuntu 14.04 (32bit), CPython 2.7.6, Crossbar.io 0.11.1, Autobahn 0.10.9

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …