日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Nginx >内容正文

Nginx

Nginx调度器

發(fā)布時(shí)間:2025/3/21 Nginx 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx调度器 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Nginx調(diào)度器

HTTP調(diào)度

什么是代理服務(wù)器

  • Nginx除了可以做web服務(wù)器(網(wǎng)站)之外還可以做反向代理服務(wù)器
  • 代理服務(wù)器的作用相當(dāng)于代理人相當(dāng)于中介
    代理服務(wù)器的過(guò)程
    當(dāng)客戶端訪問(wèn)代理服務(wù)器要頁(yè)面的時(shí)候,代理服務(wù)器沒(méi)有頁(yè)面沒(méi)關(guān)系,代理服務(wù)器幫你訪問(wèn)服務(wù)器,由后臺(tái)服務(wù)器把訪問(wèn)結(jié)果交回代理服務(wù)器,再由代理服務(wù)器把結(jié)果傳回給客戶端.這個(gè)過(guò)程叫做代理服務(wù)器
    即可以讓外網(wǎng)的用戶訪問(wèn)到內(nèi)網(wǎng)的服務(wù)器
    代理服務(wù)器也叫調(diào)度器
    調(diào)度器的作用:負(fù)載均衡 健康檢查
    負(fù)載均衡:將客戶端的并發(fā)訪問(wèn)量均衡的分配給后臺(tái)服務(wù)器.對(duì)于高并發(fā)量來(lái)說(shuō),負(fù)載均衡就顯得重要
    健康檢查: 時(shí)不時(shí)的檢查后臺(tái)服務(wù)器的健康狀態(tài).一旦發(fā)現(xiàn)有一臺(tái)服務(wù)器壞了就不會(huì)把客戶端的請(qǐng)求交給它.什么時(shí)候這臺(tái)服務(wù)器修好了就自動(dòng)的恢復(fù)訪問(wèn)
    Nginx目前支持的調(diào)度器
    7層代理(OSI) 應(yīng)用層(http網(wǎng)站代理)
    4層代理(TCP/UDP) 傳輸層(傳輸協(xié)議代理)

Nginx調(diào)度算法

  • nginx目前支持的調(diào)度算法

輪詢(默認(rèn)的):逐一調(diào)度
weight:指定輪詢幾率,權(quán)重值和訪問(wèn)比率成正比
ip_hash:根據(jù)客戶端IP分配固定的后端服務(wù)器

服務(wù)器組狀態(tài)類型

  • 狀態(tài)類型

down:表示當(dāng)前server暫時(shí)不參與負(fù)載
max_fails:允許請(qǐng)求失敗的次數(shù)(默認(rèn)為1)
fail_timeout:max_;fails次失敗后,暫停提供服務(wù)的時(shí)間(秒)

Nginx反向代理


注意事項(xiàng):做七層代理修改配置文件一定要在http{}里面配置

Nginx的HTTP調(diào)度器

問(wèn)題
使用Nginx實(shí)現(xiàn)Web反向代理功能,實(shí)現(xiàn)如下功能:
后端Web服務(wù)器兩臺(tái),可以使用httpd實(shí)現(xiàn)
Nginx采用輪詢的方式調(diào)用后端Web服務(wù)器
兩臺(tái)Web服務(wù)器的權(quán)重要求設(shè)置為不同的值
最大失敗次數(shù)為1,失敗超時(shí)時(shí)間為30秒

方案
使用4臺(tái)RHEL7虛擬機(jī),其中一臺(tái)作為Nginx代理服務(wù)器,該服務(wù)器需要配置兩塊網(wǎng)卡,IP地址分別為192.168.4.5和192.168.2.5,兩臺(tái)Web服務(wù)器IP地址分別為192.168.2.100和192.168.2.200。客戶端測(cè)試主機(jī)IP地址為192.168.4.10

環(huán)境準(zhǔn)備:
首先準(zhǔn)備四臺(tái)虛擬機(jī)IP地址分別為:
proxy:192.168.4.5/24(eth0)
Client:192.168.4.10/24(eth0)
web1:192.168.2.100/24(eth1)
web2:192.168.2.200/24(eth1)

步驟一:部署實(shí)施后端Web服務(wù)器

  • 部署后端Web1服務(wù)器
    后端Web服務(wù)器可以簡(jiǎn)單使用yum方式安裝httpd實(shí)現(xiàn)Web服務(wù),為了可以看出后端服務(wù)器的不同,可以將兩臺(tái)后端服務(wù)器的首頁(yè)文檔內(nèi)容設(shè)置為不同的內(nèi)容。(只適合練習(xí)環(huán)境使用,生產(chǎn)環(huán)境下兩臺(tái)后端服務(wù)器的首頁(yè)文檔內(nèi)容應(yīng)該相同)
  • 先查看yum源的倉(cāng)庫(kù)訪問(wèn)地址 [root@web1 ~]# yum repolist [root@web1 ~]# yum -y install httpd [root@web1 ~]# echo "192.168.2.100" > /var/www/html/index.html [root@web1 ~]# systemctl restart httpd

    2)部署后端Web2服務(wù)器

    [root@web2 ~]# yum -y install httpd [root@web2 ~]# echo "192.168.2.200" > /var/www/html/index.html [root@web2 ~]# systemctl restart httpd

    步驟二:配置Nginx服務(wù)器,添加服務(wù)器池,實(shí)現(xiàn)反向代理功能
    1)修改/usr/local/nginx/conf/nginx.conf配置文件

    [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf17 http {33 #gzip on;34 upstream webserver { #定義集群的名字為webserver35 server 192.168.2.100:80; #不寫(xiě)端口號(hào)則默認(rèn)訪問(wèn)80端口36 server 192.168.2.200;37 } #使用upstream定義后端服務(wù)器集群,集群名稱任意(如webserver)#使用server定義集群中的具體服務(wù)器和端口http {3839 server {http {...40 listen 80;41 server_name localhost;47 location / {#通過(guò)proxy_pass將用戶的請(qǐng)求轉(zhuǎn)發(fā)給webserver集群48 proxy_pass http://webserver; #調(diào)用集群,計(jì)算機(jī)會(huì)默認(rèn)先識(shí)別此行信息49 root html; #優(yōu)先級(jí)最低50 index index.html index.htm;51 }

    2)重起服務(wù)

    [root@proxy nginx]# /usr/local/nginx/sbin/nginx [root@proxy nginx]# /usr/local/nginx/sbin/nginx -s reload #重起服務(wù) #請(qǐng)先確保nginx是啟動(dòng)狀態(tài),否則運(yùn)行該命令會(huì)報(bào)錯(cuò),報(bào)錯(cuò)信息如下: #[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory) ############################################################################# [root@proxy ~]# /usr/local/nginx/sbin/nginx -v #查看當(dāng)前nginx的版本 nginx version: nginx/1.12.2 [root@proxy ~]# /usr/local/nginx/sbin/nginx -V #查看當(dāng)前nginx的詳細(xì)信息,模塊等 nginx version: nginx/1.12.2 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --with-http_ssl_module --with-stream --with-http_stub_status_module

    3)客戶端使用瀏覽器訪問(wèn)代理服務(wù)器測(cè)試輪詢效果

    [root@client ~]# curl http://192.168.4.5 #使用該命令多次訪問(wèn) 192.168.2.100 [root@client ~]# curl http://192.168.4.5 #使用該命令多次訪問(wèn) 192.168.2.200 出現(xiàn)的效果為輪詢效果. 調(diào)度器帶健康檢查功能,當(dāng)web服務(wù)器其中一臺(tái)壞掉了,就會(huì)自動(dòng)停止訪問(wèn) 下面以web1作為示例: [root@web1 ~]# systemctl stop httpd [root@client ~]# curl 192.168.4.5 192.168.2.200 [root@client ~]# curl 192.168.4.5 192.168.2.200 [root@client ~]# curl 192.168.4.5 192.168.2.200 由于實(shí)驗(yàn)中只用了兩臺(tái)web,所以停止web1服務(wù),客戶端還是能正常訪問(wèn),沒(méi)有任何感覺(jué)

    步驟二:配置upstream服務(wù)器集群池屬性

    1)設(shè)置失敗次數(shù),超時(shí)時(shí)間,權(quán)重
    weight可以設(shè)置后臺(tái)服務(wù)器的權(quán)重,max_fails可以設(shè)置后臺(tái)服務(wù)器的失敗次數(shù),fail_timeout可以設(shè)置后臺(tái)服務(wù)器的失敗超時(shí)時(shí)間。

    [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf .. .. http { .. .. upstream webserver {server 192.168.2.100 weight=1 max_fails=1 fail_timeout=30; server 192.168.2.200 weight=2 max_fails=2 fail_timeout=30;server 192.168.2.101 down; } #weight設(shè)置服務(wù)器權(quán)重值,默認(rèn)值為1(加權(quán)輪詢) #max_fails設(shè)置最大失敗次數(shù),測(cè)試服務(wù)器幾次才確認(rèn)服務(wù)器失敗 #fail_timeout設(shè)置失敗超時(shí)時(shí)間,單位為秒 #down標(biāo)記服務(wù)器已關(guān)機(jī),不參與集群調(diào)度 .. .. server {listen 80;server_name localhost;location / {proxy_pass http://webserver;} }

    2)重新加載配置

    [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload #請(qǐng)先確保nginx是啟動(dòng)狀態(tài),否則運(yùn)行該命令會(huì)報(bào)錯(cuò),報(bào)錯(cuò)信息如下: #[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
  • 關(guān)閉一臺(tái)后端服務(wù)器(如web1)
  • [root@web1 ~]# systemctl stop httpd
  • 客戶端使用瀏覽器訪問(wèn)代理服務(wù)器測(cè)試輪詢效果
  • [root@client ~]# curl http://192.168.4.5 //使用該命令多次訪問(wèn)查看效果
  • 再次啟動(dòng)后端服務(wù)器的httpd(如web1)
  • [root@web1 ~]# systemctl start httpd
  • 客戶端再次使用瀏覽器訪問(wèn)代理服務(wù)器測(cè)試輪詢效果
  • [root@client ~]# curl http://192.168.4.5 //使用該命令多次訪問(wèn)查看效果

    步驟三:配置upstream服務(wù)器集群的調(diào)度算法

    1)設(shè)置相同客戶端訪問(wèn)相同Web服務(wù)器

    [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf .. .. http { .. .. upstream webserver { #通過(guò)ip_hash設(shè)置調(diào)度規(guī)則為:相同客戶端訪問(wèn)相同服務(wù)器ip_hash;server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10;server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10;} .. .. server {listen 80;server_name www.tarena.com;location / {proxy_pass http://webserver;} }

    2)重新加載配置

    root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload #請(qǐng)先確保nginx是啟動(dòng)狀態(tài),否則運(yùn)行該命令會(huì)報(bào)錯(cuò),報(bào)錯(cuò)信息如下: #[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

    3 ) 客戶端使用瀏覽器訪問(wèn)代理服務(wù)器測(cè)試輪詢效果

    [root@client ~]# curl http://192.168.4.5 //使用該命令多次訪問(wèn)查看效果

    TCP/UDP調(diào)度

    模塊

    • ngx_stream_core_module模塊
    • 使用==–with-stream==開(kāi)啟該模塊
      注意:
      nginx從1.9版本才開(kāi)始支持該功能

    語(yǔ)法格式


    注意事項(xiàng):做四層代理修改配置文件一定要在在http{}外面配置

    問(wèn)題

    使用Nginx實(shí)現(xiàn)TCP/UDP調(diào)度器功能,實(shí)現(xiàn)如下功能:
    后端SSH服務(wù)器兩臺(tái)
    Nginx編譯安裝時(shí)需要使用–with-stream,開(kāi)啟ngx_stream_core_module模塊
    Nginx采用輪詢的方式調(diào)用后端SSH服務(wù)器
    方案

    使用4臺(tái)RHEL7虛擬機(jī),其中一臺(tái)作為Nginx代理服務(wù)器,該服務(wù)器需要配置兩塊網(wǎng)卡,IP地址分別為192.168.4.5和192.168.2.5,兩臺(tái)SSH服務(wù)器IP地址分別為192.168.2.100和192.168.2.200。客戶端測(cè)試主機(jī)IP地址為192.168.4.10。如圖-2所示。

    步驟一:部署支持4層TCP/UDP代理的Nginx服務(wù)器

    1)部署nginx服務(wù)器
    編譯安裝必須要使用–with-stream參數(shù)開(kāi)啟4層代理模塊。

    如果安裝過(guò)nginx,首先將安裝的nginx服務(wù)器停掉再刪掉nginx,沒(méi)有則直接安裝nginx的依賴包們gcc,openssl-devel,pcre-devel [root@proxy nginx]# /usr/local/nginx/sbin/nginx -s stop [root@proxy nginx]# rm -rf /usr/local/nginx/ [root@proxy nginx]# cd [root@proxy ~]# cd nginx-1.12.2/ [root@proxy nginx-1.12.2]# ./configure \ > --with-http_ssl_module \ //開(kāi)啟SSL加密功能 > --with-stream //開(kāi)啟4層反向代理功能 [root@proxy nginx-1.12.2]# make && make install //編譯并安裝

    2 ) 修改nginx的配置文件

    [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf16 stream {17 upstream backend {18 server 192.168.2.100:22; //后端SSH服務(wù)器的IP和端口19 server 192.168.2.200:22;20 }21 server {22 listen 12345; //Nginx監(jiān)聽(tīng)的端口,不要使用22端口,會(huì)產(chǎn)生端口的沖突23 proxy_pass backend; 24 }25 } 26 27 http {28 include mime.types;29 ......

    端口沖突

    網(wǎng)絡(luò)原則: IP地址對(duì)應(yīng)唯一的一臺(tái)主機(jī),端口對(duì)應(yīng)唯一的一個(gè)服務(wù)
    當(dāng)兩個(gè)服務(wù)都想霸占一個(gè)端口時(shí)會(huì)產(chǎn)生沖突

    3 ) 重起服務(wù)

    [root@proxy ~]# /usr/local/nginx/sbin/nginx [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload #請(qǐng)先確保nginx是啟動(dòng)狀態(tài),否則運(yùn)行該命令會(huì)報(bào)錯(cuò),報(bào)錯(cuò)信息如下: #[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

    4 ) 客戶端使用訪問(wèn)代理服務(wù)器測(cè)試輪詢效果

    [root@client ~]# ssh 192.168.4.5 //如果不指定-p選項(xiàng),則默認(rèn)進(jìn)入22端口,進(jìn)入到proxy [root@proxy ~]# [root@client ~]# ssh 192.168.4.5 -p 12345 //根據(jù)輪詢的原則顯示 [root@web1 ~]# exit [root@client ~]# ssh 192.168.4.5 -p 12345 [root@web2 ~]# exit

    Nginx常見(jiàn)問(wèn)題處理

    問(wèn)題
    本案例要求對(duì)Nginx服務(wù)器進(jìn)行適當(dāng)優(yōu)化,解決如下問(wèn)題,以提升服務(wù)器的處理性能:

    • 如何自定義返回給客戶端的404錯(cuò)誤頁(yè)面
    • 如何查看服務(wù)器狀態(tài)信息
    • 如果客戶端訪問(wèn)服務(wù)器提示“Too many open files”如何解決
    • 如何解決客戶端訪問(wèn)頭部信息過(guò)長(zhǎng)的問(wèn)題
    • 如何讓客戶端瀏覽器緩存數(shù)據(jù)

    客戶機(jī)訪問(wèn)此Web服務(wù)器驗(yàn)證效果:

    • 使用ab壓力測(cè)試軟件測(cè)試并發(fā)量
    • 編寫(xiě)測(cè)試腳本生成長(zhǎng)頭部信息的訪問(wèn)請(qǐng)求
    • 客戶端訪問(wèn)不存在的頁(yè)面,測(cè)試404錯(cuò)誤頁(yè)面是否重定向
    自定義報(bào)錯(cuò)頁(yè)面

    1)優(yōu)化前,客戶端使用瀏覽器訪問(wèn)不存在的頁(yè)面,會(huì)提示404文件未找到

    [root@client ~]# firefox http://192.168.4.5/xxxxx //訪問(wèn)一個(gè)不存在的頁(yè)面 <html> <head><title>404 Not Found</title></head> <body bgcolor="white"> <center><h1>404 Not Found</h1></center> <hr><center>nginx/1.12.2</center> </body> </html>

    2 ) 修改Nginx配置文件,自定義報(bào)錯(cuò)頁(yè)面

    [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf .. ..charset utf-8; //僅在需要中文時(shí)修改該選項(xiàng) error_page 404 /404.html; //自定義錯(cuò)誤頁(yè)面 .. .. [root@proxy ~]# vim /usr/local/nginx/html/404.html //生成錯(cuò)誤頁(yè)面 偶買噶,沒(méi)有頁(yè)面啦 [root@proxy ~]# usr/local/nginx/sbin/nginx -s reload #請(qǐng)先確保nginx是啟動(dòng)狀態(tài),否則運(yùn)行該命令會(huì)報(bào)錯(cuò),報(bào)錯(cuò)信息如下: #[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

    3 ) 優(yōu)化后,客戶端使用瀏覽器訪問(wèn)不存在的頁(yè)面,會(huì)提示自己定義的40x.html頁(yè)面

    [root@client ~]# firefox 192.168.4.5/udhuishdi

    常見(jiàn)的http代碼

    狀態(tài)碼功能描述
    100請(qǐng)求已接收,客戶端可以繼續(xù)發(fā)送請(qǐng)求
    101Switching Protocals 服務(wù)器根據(jù)客戶端的請(qǐng)求切換協(xié)議
    200一切正常
    201服務(wù)器已經(jīng)創(chuàng)建了文檔
    202服務(wù)器已接收了請(qǐng)求,但處理尚未完成
    203文檔正常返回,但一些頭部信息可能不正確
    300客戶端請(qǐng)求的資源可以在多個(gè)位置找到
    301永久重定向
    302臨時(shí)重定向
    305使用代理服務(wù)
    400請(qǐng)求語(yǔ)法錯(cuò)誤
    401用戶名或密碼錯(cuò)誤,客戶被拒絕
    401.1登錄失敗
    403禁止訪問(wèn)(客戶端IP地址被拒絕)
    404文件不存在
    406指定資源已找到,但MIME類型與客戶端要求不兼容
    406.6IP地址被拒絕
    403.9用戶數(shù)過(guò)多
    414請(qǐng)求URL頭部過(guò)長(zhǎng)
    500服務(wù)器內(nèi)部錯(cuò)誤
    501服務(wù)器不支持客戶端的請(qǐng)求功能
    502Bad Gateway網(wǎng)關(guān)錯(cuò)誤,一般是做了集群,找不著后臺(tái)服務(wù)器,服務(wù)器作為網(wǎng)關(guān)或者代理時(shí),為了完成請(qǐng)求訪問(wèn)下一個(gè)服務(wù)器,當(dāng)該服務(wù)器返回了非法應(yīng)答
    503服務(wù)不可用
    504網(wǎng)關(guān)超時(shí),服務(wù)器處于維護(hù)或者負(fù)載過(guò)高無(wú)法響應(yīng)
    505服務(wù)器不支持客戶端請(qǐng)求的HTTP版本
    返回狀態(tài)碼規(guī)律
    • 200開(kāi)頭代表一切正常
    • 300開(kāi)頭代表重定向
    • 400開(kāi)頭代表客戶端問(wèn)題
    • 500開(kāi)頭代表服務(wù)器內(nèi)部問(wèn)題
    查看服務(wù)器的狀態(tài)信息

    如何查看服務(wù)器狀態(tài)信息(非常重要的功能)
    1)編譯安裝時(shí)使用–with-http_stub_status_module開(kāi)啟狀態(tài)頁(yè)面模塊
    再次重新編譯安裝nginx

    [root@proxy ~]# /usr/local/nginx/sbin/nginx -s stop [root@proxy ~]# rm -rf /usr/local/nginx/ [root@proxy ~]# tar -zxvf nginx-1.12.2.tar.gz [root@proxy ~]# cd nginx-1.12.2 [root@proxy nginx-1.12.2]# ./configure \> --with-http_ssl_module //開(kāi)啟SSL加密功能 > --with-stream //開(kāi)啟TCP/UDP代理模塊 > --with-http_stub_status_module //開(kāi)啟status狀態(tài)頁(yè)面 [root@proxy nginx-1.12.2]# make && make install //編譯并安裝

    2)啟用Nginx服務(wù)并查看監(jiān)聽(tīng)端口狀態(tài)

    ss命令可以查看系統(tǒng)中啟動(dòng)的端口信息,該命令常用選項(xiàng)如下:
    -a顯示所有端口的信息
    -n以數(shù)字格式顯示端口號(hào)
    -t顯示TCP連接的端口
    -u顯示UDP連接的端口
    -l顯示服務(wù)正在監(jiān)聽(tīng)的端口信息,如httpd啟動(dòng)后,會(huì)一直監(jiān)聽(tīng)80端口
    -p顯示監(jiān)聽(tīng)端口的服務(wù)名稱是什么(也就是程序名稱) 注意:在RHEL7系統(tǒng)中可以使用ss命令替代netstat命令,功能一樣,選項(xiàng)一樣。

    [root@proxy ~]# /usr/local/nginx/sbin/nginx [root@proxy ~]# netstat -anptu | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10441/nginx [root@proxy ~]# ss -anptu | grep nginx

    3 ) 修改nginx配置文件

    [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf35 server {36 listen 80;37 server_name localhost;38 39 location /status { #如果用戶要訪問(wèn)status,那么40 stub_status on;# allow IP地址(管理員IP)# deny ip地址(all) #只允許管理員查看狀態(tài)41 } [root@proxy ~]# /usr/local/nginx/sbin/nginx [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload

    4)優(yōu)化后,查看狀態(tài)頁(yè)面信息

    [root@proxy ~]# curl http://192.168.4.5/status Active connections: 1 server accepts handled requests 1 1 1 Reading: 0 Writing: 1 Waiting: 0


    Active connections:當(dāng)前活動(dòng)的連接數(shù)量。
    Accepts Handled Requests:服務(wù)端已經(jīng)接受客戶端連接總數(shù)和已經(jīng)處理客戶端的連接總數(shù)
    (一般與accepts一致,除非服務(wù)器限制了連接數(shù)量)。
    數(shù)量只會(huì)增高. 重啟nginx的時(shí)候會(huì)重置為0.
    第一個(gè)數(shù)字代表客戶端發(fā)送多少次請(qǐng)求連接
    第二個(gè)數(shù)字代表服務(wù)端處理了多少次客戶端的請(qǐng)求
    第三個(gè)數(shù)字代表網(wǎng)頁(yè)點(diǎn)擊量,刷新一次要一次頁(yè)面
    Reading:當(dāng)前服務(wù)器正在讀取客戶端請(qǐng)求頭的數(shù)量。
    Writing:當(dāng)前服務(wù)器正在寫(xiě)響應(yīng)信息的數(shù)量。
    Waiting:當(dāng)前多少客戶端在等待服務(wù)器的響應(yīng)。

    優(yōu)化Nginx并發(fā)量

    1)優(yōu)化前使用ab高并發(fā)測(cè)試

    [root@proxy ~]# ab -n 2000 -c 2000 http://192.168.4.5/ Benchmarking 192.168.4.5 (be patient) socket: Too many open files (24) //提示打開(kāi)文件數(shù)量過(guò)多

    2 )修改Nginx配置文件,增加并發(fā)量

    [root@proxy ~]# lscpu CPU(s): 2 #雙核 [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf .. .. worker_processes 2; //與CPU核心數(shù)量一致 events { worker_connections 65535; //每個(gè)worker最大并發(fā)連接數(shù),理論值5萬(wàn)#這兩行的兩個(gè)參數(shù)與并發(fā)量有關(guān)#端口號(hào)最大數(shù): 65535 } .. .. [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload

    3)優(yōu)化Linux內(nèi)核參數(shù)(最大文件數(shù)量,1024)

    [root@proxy ~]# ulimit -a //查看所有屬性值open files (-n) 1024 //最多開(kāi)多少文件max user processes (-u) 5569 //最多開(kāi)多少程序 [root@proxy ~]# ulimit -Hn 100000 //設(shè)置硬限制(臨時(shí)規(guī)則) [root@proxy ~]# ulimit -Sn 100000 //設(shè)置軟限制(臨時(shí)規(guī)則) [root@proxy ~]# ulimit -a //再次查看open files (-n) 100000 [root@proxy ~]# ab -c 2000 -n 2000 http://192.168.4.5/ //再次查看,此時(shí)就可以直接看到回復(fù)[root@proxy ~]# vim /etc/security/limits.conf.. .. * soft nofile 100000 * hard nofile 100000 #該配置文件分4列,分別如下: #用戶或組 硬限制或軟限制 需要限制的項(xiàng)目 限制的值

    4)優(yōu)化后測(cè)試服務(wù)器并發(fā)量(因?yàn)榭蛻舳藳](méi)調(diào)內(nèi)核參數(shù),所以在proxy測(cè)試)

    [root@proxy ~]# ab -n 2000 -c 2000 http://192.168.4.5/

    優(yōu)化Nginx數(shù)據(jù)包頭緩存

    1)優(yōu)化前,使用腳本測(cè)試長(zhǎng)頭部請(qǐng)求是否能獲得響應(yīng)

    [root@proxy ~]# ls /opt/lnmp_soft/buffer.sh /opt/lnmp_soft/buffer.sh [root@proxy ~]# cd /opt/lnmp_soft/ [root@proxy lnmp_soft]# ./buffer.sh <html> <head><title>414 Request-URI Too Large</title></head> ##出現(xiàn)414報(bào)錯(cuò) <body bgcolor="white"> <center><h1>414 Request-URI Too Large</h1></center> ##提示URI地址欄頭部信息過(guò)大 <hr><center>nginx/1.12.2</center> </body> </html>

    2 ) 修改Nginx配置文件,增加數(shù)據(jù)包頭部緩存大小

    [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf .. .. http { client_header_buffer_size 1k; //默認(rèn)請(qǐng)求包頭信息的緩存 large_client_header_buffers 4 4k; //大請(qǐng)求包頭部信息的緩存?zhèn)€數(shù)與容量,4個(gè)乘4k .. .. } [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload

    3)優(yōu)化后,使用腳本測(cè)試長(zhǎng)頭部請(qǐng)求是否能獲得響應(yīng)

    [root@proxy lnmp_soft]# ./buffer.sh <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;} </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p><p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p> </body> </html>
    瀏覽器本地緩存靜態(tài)數(shù)據(jù)

    1)使用Firefox瀏覽器查看緩存
    以Firefox瀏覽器為例,在Firefox地址欄內(nèi)輸入about:cache將顯示Firefox瀏覽器的緩存信息,如圖-3所示,點(diǎn)擊List Cache Entries可以查看詳細(xì)信息。

    disk (目前緩存的信息有多少)
    Number of entries: 緩存數(shù)
    Maximum storage size: 最大緩存
    Storage in use: 緩存大小
    Storage disk location: 緩存路徑
    List Cache Entries 查看曾經(jīng)緩存的資料

    2)清空f(shuō)irefox本地緩存數(shù)據(jù),如圖-4所示。


    3)修改Nginx配置文件,定義對(duì)靜態(tài)頁(yè)面的緩存時(shí)間

    [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf server {listen 80;server_name localhost;location / {root html;index index.html index.htm;} location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ { expires 30d; //定義客戶端緩存時(shí)間為30天 } } [root@proxy ~]# cp /usr/share/backgrounds/day.jpg /usr/local/nginx/html [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload #請(qǐng)先確保nginx是啟動(dòng)狀態(tài),否則運(yùn)行該命令會(huì)報(bào)錯(cuò),報(bào)錯(cuò)信息如下: #[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

    4)優(yōu)化后,使用Firefox瀏覽器訪問(wèn)圖片,再次查看緩存信息

    [root@client ~]# firefox http://192.168.4.5/day.jpg

    總結(jié)

    以上是生活随笔為你收集整理的Nginx调度器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。