国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 課堂 > 基礎(chǔ)知識(shí) > 正文

Linux自學(xué)記錄 LNMP

2024-09-12 20:30:11
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
       傳統(tǒng)上基于進(jìn)程或線(xiàn)程模型架構(gòu)的web服務(wù)通過(guò)每進(jìn)程或每線(xiàn)程處理并發(fā)請(qǐng)求,這勢(shì)必會(huì)在網(wǎng)絡(luò)和I/O操作時(shí)產(chǎn)生阻塞,其另一個(gè)必然結(jié)果則是對(duì)內(nèi)存或CPU的利用率低下。生成一個(gè)新的進(jìn)程/線(xiàn)程需要事先備好其運(yùn)行時(shí)環(huán)境,這包括為其分配堆內(nèi)存和棧內(nèi)存,以及為其創(chuàng)建新的執(zhí)行上下文等。這些操作都需要占用CPU,而且過(guò)多的進(jìn)程/線(xiàn)程還會(huì)帶來(lái)線(xiàn)程抖動(dòng)或頻繁的上下文切換,系統(tǒng)性能也會(huì)由此進(jìn)一步下降。
 
       在設(shè)計(jì)的最初階段,nginx的主要著眼點(diǎn)就是其高性能以及對(duì)物理計(jì)算資源的高密度利用,因此其采用了不同的架構(gòu)模型。受啟發(fā)與多種操作系統(tǒng)設(shè)計(jì)中基于“事件”的高級(jí)處理機(jī)制,nginx采用了模塊化、事件驅(qū)動(dòng)、異步、單線(xiàn)程及非阻塞的架構(gòu),并大量采用了多路復(fù)用及事件通知機(jī)制。在nginx中,連接請(qǐng)求由為數(shù)不多的幾個(gè)僅包含一個(gè)線(xiàn)程的進(jìn)程worker以高效的回環(huán)機(jī)制進(jìn)行處理,而每個(gè)worker可以并行處理數(shù)千個(gè)的并發(fā)連接請(qǐng)求。
 
       如果負(fù)載以cpu密集型應(yīng)用為主,如ssl或壓縮應(yīng)用,則worker數(shù)應(yīng)與cpu數(shù)相同;如果負(fù)載以IO密集型為主,如響應(yīng)大量?jī)?nèi)容給客戶(hù)端,則worker數(shù)應(yīng)該為cpu個(gè)數(shù)的1.5或2倍。
 
       Nginx會(huì)按需同時(shí)運(yùn)行多個(gè)進(jìn)程:一個(gè)主進(jìn)程(master)和幾個(gè)工作進(jìn)程(worker),配置了緩存時(shí)還會(huì)有緩存加載器進(jìn)程(cache loader)和緩存管理器進(jìn)程(cache manager)等。所有進(jìn)程均是僅含有一個(gè)線(xiàn)程,并主要通過(guò)“共享內(nèi)存”的機(jī)制實(shí)現(xiàn)進(jìn)程間通信。主進(jìn)程以root用戶(hù)身份運(yùn)行,erworker、cache loader和cache manager均應(yīng)以非特權(quán)用戶(hù)身份運(yùn)行。
 
        Nginx的配置有著幾個(gè)不同的上下文:main、http、server、upstream和location(還有實(shí)現(xiàn)郵件服務(wù)反向代理的mail)。配置語(yǔ)法的格式和定義方式遵循所謂的c風(fēng)格,因此支持嵌套,還有著邏輯清晰并易于創(chuàng)建、閱讀和維護(hù)等優(yōu)勢(shì)。
 
        Nginx的代碼是由一個(gè)核心和一系列的模塊組成,核心主要用于提供web server的基本功能,以及web和mail反向代理的功能:還用于啟用網(wǎng)絡(luò)協(xié)議,創(chuàng)建不要的運(yùn)行時(shí)環(huán)境以及確保不同的模塊之間平滑地進(jìn)行交互。不過(guò),大多跟協(xié)議相關(guān)的功能和某應(yīng)用特有的功能都是由nginx的模塊實(shí)現(xiàn)的。這些功能模塊大致可以分為事件模塊、階段性處理器、輸出國(guó)濾器、變量處理器、協(xié)議、upstream和負(fù)載均衡幾個(gè)級(jí)別,這些共同組成了nginx的http功能。事件模塊主要用于提供OS獨(dú)立的(不同操作系統(tǒng)的時(shí)間機(jī)制有所不同)事件通知機(jī)制如kqueue或epoll等。協(xié)議模塊則負(fù)責(zé)實(shí)現(xiàn)nginx通過(guò)http、tls/ssl、smtp、pop3以及imap與對(duì)應(yīng)的客戶(hù)端建立會(huì)話(huà)。
 
       在nginx內(nèi)部,進(jìn)程間的通信是通過(guò)模塊的pipeline或chain實(shí)現(xiàn)的:換句話(huà)說(shuō),每一個(gè)功能或操作都由一個(gè)模塊來(lái)實(shí)現(xiàn)。例如,壓縮、通過(guò)fastcgi或uwcgi協(xié)議與upstream服務(wù)器通信,以及與mencached建立會(huì)話(huà)等。

(編輯:武林網(wǎng))

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 田东县| 唐河县| 个旧市| 塔河县| 米林县| 张家港市| 富民县| 兴隆县| 宜城市| 铁力市| 那坡县| 绍兴县| 彭水| 慈利县| 精河县| 屯门区| 施甸县| 政和县| 开化县| 南开区| 丰顺县| 鹤壁市| 中方县| 大兴区| 赤峰市| 铜鼓县| 凭祥市| 屏东县| 孟津县| 密山市| 嘉黎县| 都匀市| 东源县| 义马市| 昌邑市| 偃师市| 颍上县| 彭阳县| 青阳县| 锦屏县| 贺州市|