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