1、前言
昨天總結(jié)了一下Linux下網(wǎng)絡編程“驚群”現(xiàn)象,給出Nginx處理驚群的方法,使用互斥鎖。為例發(fā)揮多核的優(yōu)勢,目前常見的網(wǎng)絡編程模型就是多進程或多線程,根據(jù)accpet的位置,分為如下場景:
?。?)單進程或線程創(chuàng)建socket,并進行l(wèi)isten和accept,接收到連接后創(chuàng)建進程和線程處理連接
(2)單進程或線程創(chuàng)建socket,并進行l(wèi)isten,預先創(chuàng)建好多個工作進程或線程accept()在同一個服務器套接字、
這兩種模型解充分發(fā)揮了多核CPU的優(yōu)勢,雖然可以做到線程和CPU核綁定,但都會存在:
單一listener工作進程胡線程在高速的連接接入處理時會成為瓶頸
多個線程之間競爭獲取服務套接字
緩存行跳躍
很難做到CPU之間的負載均衡
隨著核數(shù)的擴展,性能并沒有隨著提升
參考:
延伸閱讀
學習是年輕人改變自己的最好方式