基于Nginx的系統(tǒng)運(yùn)維_第1頁(yè)
基于Nginx的系統(tǒng)運(yùn)維_第2頁(yè)
基于Nginx的系統(tǒng)運(yùn)維_第3頁(yè)
基于Nginx的系統(tǒng)運(yùn)維_第4頁(yè)
基于Nginx的系統(tǒng)運(yùn)維_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于Nginx的系統(tǒng)運(yùn)維從代碼看Nginx運(yùn)維本質(zhì)可伸縮性、可用性Nginx在負(fù)載均衡和Web加速服務(wù)器層面負(fù)有盛名負(fù)載均衡可伸縮性,容災(zāi)WEB加速服務(wù)器靜態(tài)內(nèi)容、高層次內(nèi)容緩存常見(jiàn)Web框架應(yīng)用服務(wù)器動(dòng)態(tài)內(nèi)容處理,如django、tomcat緩存低層次內(nèi)容緩存,如redis數(shù)據(jù)庫(kù)數(shù)據(jù)持久化節(jié)約機(jī)器、降低成本單節(jié)點(diǎn)支撐更大的負(fù)載 每請(qǐng)求消耗更少的資源更快投入產(chǎn)出比高廣泛使用,經(jīng)過(guò)全面考驗(yàn)擴(kuò)展性高,大量模塊提供了 足夠豐富的功能可以不造輪子,只搭積木為什么選擇Nginx?編譯準(zhǔn)備環(huán)境理解、執(zhí)行configure編譯010203修改配置熟悉配置格式了解如何明確用法 理解腳本式配置error日志編譯

2、時(shí)-with-debug打開(kāi)定位問(wèn)題時(shí)配置日志級(jí)別debug日志定位配置錯(cuò)誤0405安裝到正確位置 開(kāi)機(jī)自啟Access日志分割部署access日志熟悉可利用的變量goaccess -f access.log -o report.html - real-time-html -ws-url=運(yùn)維nginx的步驟緩存有效的緩存往往是提升 性能的殺器減少進(jìn)程消耗降低寫(xiě)日志磁盤(pán)IO 使用sendfile修改操作系統(tǒng)配置更好的適合高并發(fā)場(chǎng)景提升傳輸效率長(zhǎng)連接代替短連接Gzip壓縮降低帶寬限制速度保護(hù)應(yīng)用服務(wù)器架構(gòu)優(yōu)化緩存keepalive長(zhǎng)連接gzip壓縮01Nginx優(yōu)化限制流量access日志批量輸

3、出啟用sendfile等高性能配置02Linux優(yōu)化提高Backlog、文件描述符、端口范 圍限制TCP連接傳輸優(yōu)化03提升性能Nginx能做些什么?事件驅(qū)動(dòng)事 件 收 集、 分 發(fā) 者連接建立事 件消費(fèi)者讀事件消費(fèi) 者寫(xiě)事件消費(fèi)者連接關(guān)閉事件消費(fèi)者異步讀磁盤(pán) 事件消費(fèi)者請(qǐng)求建立TCP 連接事件TCP連接可讀事件TCP連接關(guān)閉事件TCP連接可寫(xiě)事件異步讀磁盤(pán)成功事件定時(shí)器事件 消費(fèi)者事件驅(qū)動(dòng)框架eventsuse epoll;ppt素材事件驅(qū)動(dòng)框架 的優(yōu)點(diǎn):很少的上下文 切換事件驅(qū)動(dòng)框架的 缺點(diǎn):阻塞操作可以輕 易的造成性能下 降線程池與事件驅(qū)動(dòng)框架的結(jié)合sendfile() on purpo

4、se only works on things that use the page cache. Linus Torvaldsthread_pool default threads=32 max_queue=65536;全局配置 master_process on; worker_processesauto;worker_cpu_affinity auto;pid nginx.pid; worker_priority -10;繁忙的worker進(jìn)程建立連接,處理各種請(qǐng)求,包括 http請(qǐng)求、mail請(qǐng)求、tcp傳輸清閑的master進(jìn)程啟動(dòng)、監(jiān)控worker、cache進(jìn)程 接收信號(hào)命令讀取、

5、解析、重載配置文件 執(zhí)行binary升級(jí)Cache相關(guān)進(jìn)程處理文件緩存Master-Worker進(jìn)程結(jié)構(gòu)Master-worker架構(gòu)的優(yōu)點(diǎn):nginx -s reload升級(jí)Nginx監(jiān)聽(tīng)端口復(fù)用reuseportmaster建立一個(gè)監(jiān) 聽(tīng)socket, worker進(jìn) 程間共享master為每 個(gè)worker進(jìn) 程建立獨(dú)立 的socketserver listen 80;server listen 80 reuseport;用lsof可以觀察eventsaccept_mutex on;eventsaccept_mutex off;http listen 80 reuseport;reuse

6、port性能Linux3.9內(nèi)核以上Nginx模塊結(jié)構(gòu)coreNGX_CORE_MODULEevent_core NGX_EVENT_MODULEngx_http_core_moduleNGX_HTTP_MODULE請(qǐng)求處理模塊steam模塊ngx_stream_core_module NGX_STREAM_MODULEupsteam相關(guān)模塊響應(yīng)過(guò)濾模塊errlogthread_pooleventshttpstreamopensslngx_conf_module NGX_CONF_MODULENGX_MAIL_MODULEmail./configure -with-module動(dòng)態(tài)模塊Conf

7、igure加入模塊到c代碼編譯進(jìn)binaryload_module modules/ngx_mail_module.so啟動(dòng)時(shí)初始化模塊數(shù)組讀取load_module配置 打開(kāi)動(dòng)態(tài)庫(kù)并加入模塊數(shù)組基于模塊數(shù)組開(kāi)始初始化NGX_HTTP_POST_READ_PHASEreal_ip_headerNGX_HTTP_SERVER_REWRITE_PHASEIf、returnNGX_HTTP_FIND_CONFIG_PHASENGX_HTTP_REWRITE_PHASE同serverNGX_HTTP_POST_REWRITE_PHASENGX_HTTP_PREACCESS_PHASElimit_con

8、nNGX_HTTP_ACCESS_PHASEauth_basic_use r_fileNGX_HTTP_POST_ACCESS_PHASENGX_HTTP_TRY_FILES_PHASEtry_filesNGX_HTTP_CONTENT_PHASEindexNGX_HTTP_LOG_PHASEaccess_loghttp請(qǐng)求選擇location流程監(jiān)聽(tīng)端口1地址1+端口1監(jiān)聽(tīng)端口2地址2+端口1serverserverserver根據(jù)HTTP頭部host根據(jù)TCP四元組dstiplocationlocation根據(jù)URI合并main、server塊下 的配置項(xiàng) 到locationserver

9、listen localhost:80; listen 8000; server_name ; location /static . location / . Server listen80;server_name fuzhong.pub;.尋找location時(shí)僅在NGX_HTTP_FIND_CONFIG_PHASE階段進(jìn)行,該階段前會(huì)有post_read和server_rewrite階段http模塊工作流程讀取配置 文件打開(kāi)監(jiān) 聽(tīng)socket啟動(dòng)worker進(jìn)程http模塊解析http配置event模塊解析 event 配置stream模塊解 析stream 配置監(jiān)控進(jìn)程狀態(tài)與信號(hào)命令ht

10、tp模塊 解析配置,注冊(cè)handler建立location樹(shù)模塊回調(diào) 方法注冊(cè) handler監(jiān)聽(tīng)端口 處理,如 reuseportmaster進(jìn)程worker進(jìn)程處理事件處理信 號(hào)命令接收http包頭調(diào)用HTTP模塊 11個(gè)階段的內(nèi) 容處理方法發(fā)送HTTP響應(yīng)調(diào)用HTTP過(guò)濾 模塊的過(guò)濾header和過(guò)濾body方法header過(guò)濾模塊HTTP模塊間的配合接收HTTP頭部image_filtergzipimage_filtergzip發(fā)送HTTP頭部發(fā)送HTTP包體body過(guò)濾模塊limit_reqzone=req_one burst=120;limit_conn c_zone 1;sati

11、sfy any;allow /32; auth_basic_user_file access.pass;gzip on;image_filter resize 80 80;preaccess階段limit_conn模塊limit_req模塊access階段auth_basic模塊access模塊content階段http內(nèi)容模塊4http內(nèi)容模塊5模塊變量解析出變量的方法變量名提供變量的模塊使用變量的模塊,比 如http的access日志解析nginx.conf時(shí)定義變量使用方式變量值HTTP頭部 讀取完畢處理請(qǐng)求Nginx啟動(dòng)log_format main $remote_addr$remo

12、te_user $request $status $host $body_bytes_sent$gzip_ratio $http_referer腳本scriptip指向指令數(shù)組try_files $uri $uri/ /index.php?$args;return 401 Access denied because token is expired; if ($scheme != https) rewrite $uri permanent;執(zhí)行每條指令ngx_http_rewrite_module模塊配置 中存放解 析的指令ngx_http_fastcgi_module模塊配置 中存放解 析的

13、指令2個(gè)REWRITE_PHASE請(qǐng)求開(kāi)始執(zhí)行腳本CONTENT_PHASE階段執(zhí)行腳本Nginx啟動(dòng)時(shí)讀取nginx.conf中的腳本類配置,編譯為腳本指令數(shù)組存放 在相應(yīng)模塊的配置中uwsgi_store /data/www$original_uri; uwsgi_pass localhost:9000;決定模塊順序auto/modules找到請(qǐng)求http request line: “GET /“從uri中尋找到請(qǐng)求起始 LOG,http header: “”確 認(rèn)頭部,http header done 確認(rèn)所有HTTP頭部接收完畢處理請(qǐng)求的模塊rewrite phase: 2了解經(jīng)過(guò)了 哪些http階段 , http scriptcopy:”找到腳本變量值, http filename找到靜態(tài)文件, uwsgi param找到上游頭部找到處理它的locationtest location: “static“看 看哪些server和location嘗試 處 理 請(qǐng) 求 ,using configuration ”/”最后又 是哪個(gè)location處理了請(qǐng)求發(fā)送HTTP響應(yīng)HTTP/1.1 200 OK找到響應(yīng)確認(rèn)頭部, http gzip filter 確認(rèn)過(guò)濾模塊的處理, write new buf 確認(rèn)發(fā)送了多少字

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論