Мне любопытно, как далеко другие продвинули Повышение. Asio с точки зрения масштабируемости. Я пишу приложение, которое может использовать близко к 1 000 объектов сокета, горстке акцепторных объектов и многим тысячам объектов - таймеров. Я настроил его таким образом, что существует вызов пула потоков io_service::run
и используйте strand
s в соответствующих местах для обеспечения моих обработчиков не топают друг на друге.
Моя платформа является Red Hat Enterprise Linux с Повышением 1.39, хотя я не настроен против обновления до более поздней версии повышения.
Мы используем 1.39 на нескольких вариантах Linux для таймеров, сетевых (TCP и UDP), последовательных (20+ линий, две из которых работают на скорости 500 кбит/с) и inotify событий, и хотя у нас не так много сокетных соединений, у нас есть несколько сотен асинхронных таймеров в любое время. Они используются в производстве и работают хорошо, для нас. На вашем месте я бы создал быстрый прототип и протестировал его на производительность.
Boost 1.43 заявляет о ряде специфических для Linux улучшений производительности ASIO, но мне еще предстоит проверить их на нашем продукте.
Я использовал boost asio с клиент-сервером, где на сервере несколько сотен одновременных подключений в течение всего дня. Каждый сеанс выполняет множество операций чтения / записи по несколько часов каждый. Я бы рекомендовал использовать последнюю версию boost asio. Я не могу вспомнить версию 1.39, но у меня были проблемы со старыми версиями. Текущая версия boost asio кажется стабильной.
Программное обеспечение, о котором я говорю, работает только в Windows, я также должен упомянуть, что отличается от вашей ситуации.