且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

linux - 关于高并发的两个问题?

更新时间:2023-02-25 18:04:40

我把你的两个问题合并起来回答吧。
第一,你想的方向没问题,但是如果一个服务器同时维护千万级的TCP连接(即C10M Problem),是一件非常困难的事情,需要kernel支持/在用户态里实现TCP协议解析与Procedure调度减小开销。譬如如果你针对每一个连接开一个线程去处理,那么在常见的x86 Linux server每个线程上需要4k的空间,那么你至少需要数十G的内存来处理,还不算线程里需要给你程序开辟的空间。
第二,登录这个过程也许client发给server的数据包不大,但是server处理过程是需要耗时的(更新DB等)。和上面一点相似,所以不会把这个流程放在一个server里处理。

以上均没有考虑服务可用性等因素,你可以想象下如果这个这个server单点压力过大crash了该怎么办呢。