我正在尝试设计一种架构来处理大量 TCP 套接字连接,但我怀疑这种架构的局限性。
我将不得不处理~20k 并发TCP 连接,这些是长轮询连接,它们将保持连接很长一段时间,并且每分钟都会发送数据。
使用线程是毫无疑问的,因为 20k 线程会使系统资源耗尽。例如,我计划使用gevent来处理如此多的并发连接,甚至使用haproxy和 2 个服务器(w/gevent)来处理 10k 个连接。这有意义吗?有没有人有一些建议或有使用gevent与 10K+ 连接的经验?有谁知道处理这些连接的硬件要求吗?我看到一些基准测试显示 gevent 在 5k 并发连接上有很多连接超时,这对我的问题来说不是很有希望。
注意:我已经阅读了关于 C10k 问题和关于“百万用户 Comet 应用程序”的建议。
同时使用两者。将大约 1,000 个连接的顺序分配给一个进程。如果您达到每个当前处理进程都饱和的程度,请使用管理器来分配连接并产生新进程。
好吧,既然您可以使用 2 台服务器来处理每台 10k 的数据,为什么不使用 5 台服务器来处理每台 4k 的数据呢?