伺服器處理程式一般會採用fork模式, 每來乙個新的連線時,會建立乙個新的程序,新的程序中會重新建立乙個socket,後續新連線的訊息就由fork出來的這個程序處理.
nginx架構修改了這種模式, 新連線過來時,還是由work程序來處理.
對於fork模式, 新建的程序如果採用阻塞模式,應該是效能更高,因為在沒有報文時,該程序不會被排程.
而同乙個程序處理多個連線,就必須拋棄阻塞模式,因為阻塞模式會阻塞程序處理其他的連線,同時如果select的話, 可能也不是最佳選擇,首先select支援fd的數目有限,如果需要支援更多的fd,還需要修改linux系統標頭檔案,還有select當支援fd過多時,效能很低, 所以效率較高的處理方式就是epoll.
linux建立程序的開銷很大,並且也占用相當多的資源, 當linux程序變多時, linux程序排程開銷也很大.
nginx採用乙個程序處理多個連線就減少了上述開銷,較少了連線的處理時間和資源消耗.
nginx考慮非常細緻, 在多核上,為了減少因為work程序切換到不同核上帶來的cache miss開銷, nginx為work增加了核繫結處理.
nginx的事件驅動對效能提公升也很大.
亂談技術線的成長
來自 唐福林 很多做技術的人都希望能堅持做技術,而不是轉管理。但在當前國內的環境下,能提供堅持做技術的氛圍的公司卻寥寥無幾。技術做的好一些後,除了設計技術方案並推動實現以外,不可避免的要開始帶團隊,開始跟專案或推專案,開始盯需求討論,開發進度,測試,bug修復等等。最終,我們做的是 architec...
亂談諸葛亮的團隊建設
今天開啟電視,碰巧看到央視正在重播 三國演義 演的是諸葛亮正在向阿斗請求第六次出師伐魏。諸葛亮的才能自然是勿庸置疑的,對工作也是鞠躬盡瘁,但為什麼他老人家六出祁山,最終也沒能達到伐魏的目的呢?今天我重新思考這個問題,偶有所得。如果把伐魏當作乙個專案來看,諸葛亮看上去是乙個幾乎無可挑剔的專案團隊領導。...
也談nginx的安全限制
一 nginx安全限制 前面已經詳細介紹了nginx負載均衡的配置以及nginx本身自帶的的一些安全措施,詳情請參考 生產環境下的負載均衡配置 隨著業務的增加,網路連線的流量越來越大,合理的控制訪問請求及連線數非常重要,否則仍會出現失去響應的情況。二 增加waf模組 ngx lua waf是乙個基於...