能不能接受爆發(fā)連接(并發(fā)度如何),主要是取決于accept的速度。一個TCP連接的建立,要在client和server之間,完成三次握手,然后連接會被放到完成隊列中,accept從完成隊列中取出連接并返回。任何影響accept取連接的因素,都會影響并發(fā)度。一般策略是,1 獨立處理accept,2 使用epoll處理accept,這兩種情況,并發(fā)度都是不錯的。
并發(fā)地接受了這么多連接,并不代表能完全處理。假如有很多連接同時在線,server accept成功并收到了數(shù)據(jù),這時消息被放到消息隊列中,等待邏輯線程來處理。因為生產(chǎn)者(收數(shù)據(jù))的速度總是大于消費者(處理數(shù)據(jù))的速度,因此消息隊列會有考慮流控,以免系統(tǒng)資源被耗光。這樣,有些消息就可能丟失。這就是同時在線連接數(shù)的問題。
前者是高并發(fā),后者是高負載。設計時會權(quán)衡偏向。