Масштабируемость Boost.Asio - PullRequest
6 голосов
/ 11 июня 2010

Мне любопытно, как далеко другие продвинули Boost.Asio с точки зрения масштабируемости. Я пишу приложение, которое может использовать около 1000 объектов сокетов, несколько объектов-акцепторов и много тысяч объектов таймеров. Я настроил его так, чтобы пул потоков вызывал io_service::run и использовал strand s в соответствующих местах, чтобы мои обработчики не давили друг на друга.

Моя платформа - Red Hat Enterprise Linux с Boost 1.39, хотя я не против перехода на более новую версию boost.

Ответы [ 2 ]

9 голосов
/ 11 июня 2010

Мы используем 1,39 в нескольких версиях Linux для таймеров, сети (как TCP и UDP), последовательных (более 20 линий, две из которых работают со скоростью 500 кбит / с), так и событий inotify, и хотя у нас не так много сокетов соединения, у нас есть несколько сотен асинхронных таймеров в любое время. Они в производстве, и они хорошо работают для нас. На твоем месте я бы сделал быстрый прототип и проверил его на производительность.

Boost 1,43 заявляет о ряде улучшений производительности в ASIO, связанных с Linux, но я пока не могу сравнить их с нашим продуктом.

6 голосов
/ 11 июня 2010

Я использовал boost asio с клиентом / сервером, где сервер имеет несколько сотен одновременных подключений в течение всего дня. Каждый сеанс выполняет много операций чтения / записи по несколько часов каждая. Я бы порекомендовал использовать последнюю версию boost asio. Я не помню версию 1.39, но у меня были проблемы со старыми версиями. Текущая версия boost asio кажется стабильной.

Программное обеспечение, о котором я говорю, работает только на Windows, но я должен также упомянуть, что отличается от вашей ситуации.

...