我正在尝试设计一个架构来处理大量 TCP 套接字连接,但我对这个架构的局限性感到怀疑。
我必须处理~20k 并发TCP 连接,这些是长轮询连接,它们将保持连接状态很长一段时间并将每分钟发送数据。
使用线程是不可能的,因为 20k 个线程会耗尽系统资源。我打算使用吉文特处理如此大量的同时连接或甚至使用哈普罗西和 2 个服务器(带 gevent)每个服务器处理 10k 个连接。这有意义吗?有没有人有建议或有使用经验吉文特有 10K+ 个连接?有人知道处理这些连接的硬件要求吗?我看到了一些基准这表明在 5k 个并发连接上 gevent 出现了很多连接超时,这对于我的问题来说不是一个好消息。
笔记:我已经阅读了有关 C10k 问题和“百万用户 Comet 应用程序”的建议。
答案1
同时使用两者。为一个进程分配大约 1,000 个连接。使用经理如果达到每个当前处理进程都饱和的程度,则分配连接并产生新的进程。
答案2
那么,既然您可以使用 2 台服务器,每台处理 10k,那么为什么不使用 5 台服务器,每台处理 4k 呢?