能不能接受爆发连接(并发度如何),主要是取决于accept的速度。一个TCP连接的建立,要在client和server之间,完成三次握手,然后连接会被放到完成队列中,accept从完成队列中取出连接并返回。任何影响accept取连接的因素,都会影响并发度。一般策略是,1 独立处理accept,2 使用epoll处理accept,这两种情况,并发度都是不错的。
并发地接受了这么多连接,并不代表能完全处理。假如有很多连接同时在线,server accept成功并收到了数据,这时消息被放到消息队列中,等待逻辑线程来处理。因为生产者(收数据)的速度总是大于消费者(处理数据)的速度,因此消息队列会有考虑流控,以免系统资源被耗光。这样,有些消息就可能丢失。这就是同时在线连接数的问题。
前者是高并发,后者是高负载。设计时会权衡偏向。