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