LINUX.ORG.RU

История изменений

Исправление maxcom, (текущая версия) :

У меня конструкция вышла в итоге такая:

  • Acceptor thread, один
  • Reactor'ы, которые занимаются исключительно вводом выводом (event loop). По одному на CPU, но не больше 32. Reactor обсуживает события ввода-вывода плюс обрабатывает очередь задач которые ему положили другие треды
  • Thread pool для работы с внешними сервисами, вычислений и других долгих операций не связанных с основным IO. Настраивается, обычно 128-256 тредов

В целом конструкция оказалась вполне рабочая, единственное что единый thread pool для тяжелых задач оказался не очень хорошей идеей, лучше иметь разные для разных типов задач.

Исходная версия maxcom, :

У меня конструкция вышла в итоге такая:

  • Acceptor thread, один
  • Reactor'ы, которые занимаются исключительно вводом выводом (event loop). По одному на CPU, но не больше 32. Reactor обсуживает события ввода-вывода плюс обрабатывает очередь задач которые ему положили другие треды
  • Thread pool для работы с БД и других тяжелых операций. Настраивается, обычно 128-256 тредов

В целом конструкция оказалась вполне рабочая, единственное что единый thread pool для тяжелых задач оказался не очень хорошей идеей, лучше иметь разные для разных типов задач.