views:

268

answers:

2

I'm curious how far others have pushed Boost.Asio in terms of scalability. I am writing an application that may use close to 1000 socket objects, a handful of acceptor objects, and many thousand timer objects. I've configured it such that there's a thread pool invoking io_service::run and use strands in the appropriate places to ensure my handlers do not stomp on each other.

My platform is Red Hat Enterprise Linux with Boost 1.39, though I'm not opposed to upgrading to a more recent version of boost.

+2  A: 

I've used boost asio with a client / server where the server has several hundreds of concurrent connections all day long. Each session does a lot of read/write operations for several hours each. I would recommend using the latest version of boost asio. I can't remember version 1.39 but I've had issues with older versions. The current version of boost asio seems stable.

The software I'm talking about only runs on Windows I should mention as well though which differs from your situation.

Brian R. Bondy
+2  A: 

We are using 1.39 on several Linux flavors for timers, network (both TCP and UDP), serial (20+ lines, two of which run at 500 kbps), and inotify events, and while we don't have many socket connections, we do have a few hundred async timers at any time. They are in production and they work well, for us. If I were you, I'd make up a quick prototype and performance-test it.

Boost 1.43 claims a number of Linux-specific performance improvements in ASIO, but I am yet to benchmark them for our product.

Cubbi
Good suggestion, I'll do some measurements comparing Boost 1.39 to 1.43.
Sam Miller