Extensibilité de Boost.Asio

Je suis curieux de savoir jusqu’où d’autres ont poussé Boost.Asio en termes d’évolutivité. J’écris une application qui peut utiliser près de 1000 objects socket, une poignée d’objects accepteurs et plusieurs milliers d’objects temporisés. Je l’ai configuré de telle sorte qu’il y ait un pool de threads invoquant io_service::run et qu’il utilise des strand aux endroits appropriés pour garantir que mes gestionnaires ne se gênent pas les uns les autres.

Ma plate-forme est Red Hat Enterprise Linux avec Boost 1.39, bien que je ne sois pas opposé à la mise à niveau vers une version plus récente de boost.

Nous utilisons 1.39 sur plusieurs versions de Linux pour les temporisateurs, les réseaux (TCP et UDP), série (plus de 20 lignes, dont deux fonctionnent à 500 Kbits / s) et inotify les événements. comptez quelques centaines de minuteurs asynchrones à tout moment. Ils sont en production et ils fonctionnent bien pour nous. Si j’étais toi, je ferais un prototype rapide et le testerais.

Boost 1.43 revendique un certain nombre d’améliorations de performances spécifiques à Linux dans ASIO, mais je ne les ai pas encore évalués pour notre produit.

J’ai utilisé boost asio avec un client / serveur où le serveur dispose de plusieurs centaines de connexions simultanées tout au long de la journée. Chaque session effectue de nombreuses opérations de lecture / écriture pendant plusieurs heures chacune. Je recommande d’utiliser la dernière version de boost asio. Je ne me souviens plus de la version 1.39 mais j’ai eu des problèmes avec les anciennes versions. La version actuelle de boost asio semble stable.

Le logiciel dont je parle ne fonctionne que sous Windows, je dois le mentionner, bien que différent de votre situation.