2

在 WebSocket++ 0.3.x 库中,什么决定了有多少 WebSocket 客户端可以有活动连接的限制?是每个线程一个连接,还是一个线程可以处理多个 WebSocket 客户端连接?如果是后者,一个线程大概能持有多少个连接?

基本上,我正在寻找一个大概有多少客户端连接 WebSocket++ 库可以在大约有 25 个线程的应用程序中处理。图书馆主页是: http ://www.zaphoyd.com/websocketpp

4

1 回答 1

2

如果您在支持非阻塞/异步 I/O(Linux 上的 epoll,OS X/BSD 上的 kqueue,Windows 上的 iocp)的平台上使用基于 Boost.Asio 的传输策略和最新版本的 Boost,那么 WebSocket++ 不会对同时连接引入任何重大限制。

在这种情况下,限制几乎取决于操作系统、硬件和应用程序因素。操作系统将限制每个进程使用的文件描述符总数(通过 root 访问可以更改此限制)。高并发级别将要求您的应用程序具有适当的结构来处理它(主要使用短的、有限时间的、非阻塞处理程序)。其他因素会像限制通用服务器一样限制您。千兆以太网只能处理这么多的流量,使用 TLS 或压缩会降低性能等。

我还没有使用 0.3.x 进行广泛的性能基准测试,但是经过适当调整的应用程序中的 0.2.x 能够轻松地在 i7 内核上为成千上万的并发客户端提供服务。

WebSocket++ 架构的目的是在有足够资源的情况下扩展到任意连接数。如果您正在开发一个将 WebSocket++ 扩展到超过 10k 连接的应用程序,我会对更多细节和解决您发现的任何瓶颈感兴趣。

于 2013-03-17T18:22:44.660 回答