我试图devise一个体系结构来处理大量的TCP套接字连接,我对这个架构的限制有所怀疑。
我将不得不处理大约20k个并发 TCP连接,这些连接是长连接的,它们将长时间保持连接状态,并且会每分钟发送一次数据。
使用线程是没有问题的,因为20k线程会使系统资源不足。 我打算使用gevent来处理这种并发连接数量,甚至使用haproxy和2个服务器(w / gevent)来处理每个10k连接。 这有道理吗? 有没有人有一些build议,或有一些使用10K +连接gevent的经验? 有没有人有处理这些连接的硬件要求的想法? 我看到了一些基准testing ,显示了5k并发连接上gevent的连接超时问题,对于我的问题来说这不是很有希望。
注意 :我已经阅读了关于C10k问题和“百万用户彗星应用程序”上的build议。
同时使用两者结合。 分配1000个连接到进程的顺序。 如果您达到每个当前处理过程饱和的地步,请使用经理分配连接并产生新的stream程。
那么,因为你可以使用2个服务器来处理每个10K,为什么不使用5个服务器,每个处理4K?