成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Nginx優(yōu)化

IT那活兒 / 2135人閱讀
Nginx優(yōu)化
點(diǎn)擊上方“IT那活兒”,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!



nginx常作為反向代理或負(fù)載均衡服務(wù),前端業(yè)務(wù)數(shù)據(jù)緩存服務(wù),提高靜態(tài)資源的高并發(fā)并利用反向代理加速。在此前提下,一般來說nginx的優(yōu)化一般有本文中闡述的幾項(xiàng)。





系統(tǒng)參數(shù)優(yōu)化


1. ulimit優(yōu)化
ulimit約束了系統(tǒng)最大打開的文件數(shù)量,可通過以下方式修改:
系統(tǒng)打開文件限制參數(shù)nofile以及系統(tǒng)打開進(jìn)程數(shù)的限制參數(shù)nproc,建議兩者都設(shè)置為65535。(使用ulimit -a驗(yàn)證)
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
echo "* soft nproc 65535" >> /etc/security/limits.conf
echo "* hard nproc 65535" >> /etc/security/limits.conf
2. 內(nèi)核參數(shù)優(yōu)化
將以下內(nèi)核參數(shù)加入/etc/sysctl.conf文件中,執(zhí)行sysctl -p使之生效。


nginx配置優(yōu)化


1. 配置文件結(jié)構(gòu)
1)全局配置 

2)事件驅(qū)動(dòng)模型配置
events {
    ...........
    ...........
}

3)http服務(wù)相關(guān)配置
http {
    http服務(wù)全局配置
    server { //虛擬主機(jī)
    location { //匹配客戶端訪問請(qǐng)求,根據(jù)不同的請(qǐng)求做不同的響應(yīng)
        }
    }
}


2. 全局配置

1)啟動(dòng)工作進(jìn)程的數(shù)量,worker_processes  1; 
(CPU密集型:如SSl及壓縮應(yīng)用,worker數(shù)量建議與CPU數(shù)量一致)
(IO密集型:如響應(yīng)大量給客戶,worker進(jìn)程個(gè)數(shù)為CPU數(shù)量的兩倍)
2)指定錯(cuò)誤日志存放位置及日志級(jí)別 error_log  logs/error.log warn;
3)指定pid文件記錄nginx的主進(jìn)程號(hào) pid  logs/nginx.pid;
4)指定此進(jìn)程打開的最大文件描述符的值 worker_rlimit_nofile 65535;
5)每個(gè)工作進(jìn)程的核心文件的最大大小 worker_rlimit_core
6)將worker與CPU綁定,worker_proceses  4;
    worker_cpu_affinity 0001 0010 0100 1000。
(該示例表示分別給每個(gè)worker進(jìn)程綁定一個(gè)CPU)
3. 事件驅(qū)動(dòng)模型配置
1)指定epoll事件模型 use epoll;
2)每個(gè)工作進(jìn)程能接受最大的客戶端的連接數(shù),提高并發(fā)連接 worker_connections 10240。

4. http服務(wù)相關(guān)配置

1)include   mime.types; #文件擴(kuò)展名與文件類型映射表;
2)default_type  application/octet-stream; #默認(rèn)文件類型,默認(rèn)為text/plain;
3)定義訪問日志格式。
log_format  main $remote_addr $remote_user [$time_local] "$request" 
                $status $body_bytes_sent "$http_referer"
                 "$http_user_agent" "$http_x_forwarded_for" 
"$http_cookie" "$request_time" "$upstream_response_time" 
"$upstream_addr" "$upstream_status";
  • $remote_addr #客戶端IP地址
  • $remote_user #客戶端用戶
  • $time_local #訪問時(shí)間
  • $request #訪問請(qǐng)求(請(qǐng)求方法   文件名稱    HTTP協(xié)議版本)
  • $status #狀態(tài)碼
  • $body_bytes_sent #響應(yīng)數(shù)據(jù)大小
  • $http_referer #超鏈接地址
  • $http_user_agent #瀏覽器類型
  • $http_x_forwarded_for #客戶真實(shí)IP
  • $http_cookie #獲取cookie信息
  • $upstream_addr #后臺(tái)upstream的地址,即真正提供服務(wù)的主機(jī)地址
  • $upstream_response_time   #請(qǐng)求過程中,upstream響應(yīng)時(shí)間
  • $request_time   #整個(gè)請(qǐng)求的總時(shí)間
其他變量:
  • $host #存放請(qǐng)求報(bào)文中的主機(jī)部分 例:https://list.jd.com/list.html?cat=4938,11760,14408(值為標(biāo)紅部分)
  • $request_uri #存放請(qǐng)求的URI地址,并且?guī)в姓?qǐng)求指令 例:https://list.jd.com/list.html?cat=4938,11760,14408(值為標(biāo)紅部分)
  • $scheme #存放客戶端請(qǐng)求使用的協(xié)議,如http,https 例:https://list.jd.com/list.html?cat=4938,11760,14408(值為標(biāo)紅部分)
  • $document_uri #存放請(qǐng)求報(bào)文中的當(dāng)前URI,并且不包括請(qǐng)求指令 例:https://list.jd.com/list.html?cat=4938,11760,14408(值為標(biāo)紅部分)
  • $server_addr #存放服務(wù)器地址
  • $remote_addr #存放客戶端地址
  • $server_name #存放了客戶端請(qǐng)求到達(dá)的服務(wù)器的名稱
  • $request_filename #存放當(dāng)前請(qǐng)求的資源文件的路徑名
  • $args #存放URL中的請(qǐng)求指令 例:https://list.jd.com/list.html?cat=4938,11760,14408(值為標(biāo)紅部分)
4)訪問日志的存放位置
access_log  logs/access.log  main;
5)客戶端上傳文件大小限制
client_max_body_size 100m;
6)指定來自客戶端請(qǐng)求頭的headerbuffer大小
client_header_buffer_size 32K;
#大多數(shù)請(qǐng)求1K的緩沖區(qū)即可,如果cookie較大可增加緩沖區(qū)大小。
7)指定客戶端請(qǐng)求中較大的消息頭的緩存最大數(shù)量和大小
large_client_header_ buffers 4 32K;
# 4為個(gè)數(shù),32K為大小,最大緩存為量為4個(gè)32K。
8)開啟sendfile機(jī)制
sendfile on;
#該機(jī)制由內(nèi)核直接將內(nèi)容復(fù)制到nginx進(jìn)程對(duì)應(yīng)的內(nèi)容,節(jié)省文件拷貝的時(shí)間。
9)#tcp_nopush  on;
#僅在使用sendfile時(shí)開啟,響應(yīng)頭和正文的開始部分一同發(fā)送。
10)#tcp_nodelay  on;
#只在長連接中啟用,用于減緩網(wǎng)絡(luò)堵塞,但及建議不要與tcp_nopush同時(shí)使用。
11)每條長連接的超時(shí)時(shí)間
keepalive_timeout  65;
12)限制長連接所能發(fā)送的最大請(qǐng)求數(shù)
keepalive_requests 100;
13)限制請(qǐng)求體的大小
client_max_body_size 100m;
#若超過所設(shè)定的大小,返回413錯(cuò)誤。
14)gzip壓縮模塊
  • gzip  on; #開啟壓縮模塊

  • gzip_min_length 4K; #允許壓縮的頁面最小字節(jié)數(shù),默認(rèn)值為0(建議設(shè)置大于1K,小于1K可能越壓越大)

  • gzip_buffers 4 16K; #用于處理請(qǐng)求壓縮的緩沖區(qū)數(shù)量和大小,申請(qǐng)4個(gè)16K的內(nèi)存作為數(shù)據(jù)流緩沖

  • gzip_http_version 1.1; #用于設(shè)置識(shí)別http協(xié)議版本,默認(rèn)為1.1

  • gzip_comp_level 2; #用來指定壓縮比,1壓縮比最小處理速度最快,9壓縮比最大,傳輸速度快,處理慢,同時(shí)較耗費(fèi)CPU資源

15)對(duì)請(qǐng)求進(jìn)行限速
limit_req_zone zone=one:10m rate=5r/s; #表示一個(gè)內(nèi)存區(qū)域大小為10m,并且設(shè)定了名稱為one,且請(qǐng)求的速率是1秒5個(gè)請(qǐng)求。
16)定義緩存空間
proxy_cache_path /nginx/cache/first  levels-2:1:2 keys_zone=first:20m max_size=1G;
levels-2:1:2 #定義緩存目錄子目錄的級(jí)別,以及每個(gè)子目錄的名稱字符個(gè)數(shù);最多只能有三級(jí)子目錄;
3級(jí)子目錄,第1級(jí)目錄字符個(gè)數(shù)為1,第2級(jí)目錄字符個(gè)數(shù)為2,第3級(jí)目錄字符個(gè)數(shù)為2,字符個(gè)數(shù)最多只能有2個(gè);
/nginx/cache/first #在磁盤產(chǎn)生的目錄存儲(chǔ)緩存數(shù)據(jù);
max_size=1G #指定/nginx/cache/first中的1G空間用于存儲(chǔ)緩存數(shù)據(jù)。
5. server虛擬主機(jī)
1)監(jiān)聽端口 listen   80;
2)設(shè)置虛擬主機(jī)名稱 server_name  localhost。
6. location塊
1)自動(dòng)索引模塊HttpAutoindex
autoindex on; #當(dāng)網(wǎng)頁目錄中沒有index.html文件,該目錄以下載網(wǎng)站的方式展現(xiàn);
2)限制模塊HttpLimit zone
該模塊可以針對(duì)條件,進(jìn)行會(huì)話的并發(fā)連接數(shù)控制。(例如:限制每個(gè)IP的并發(fā)連接數(shù)。)
http { 
limit_zone   one $binary_remote_addr  10m;
server {
location /download/ {
     limit_conn   one 1;
}
限制的區(qū)域名是one,容量是10M,以變量 $binary_remote_addr 作為會(huì)話的判斷基準(zhǔn)(即一個(gè)地址一個(gè)會(huì)話)。
$remote_addr 的長度為 7 至 15 bytes,會(huì)話信息的長度為 32 或 64 bytes;
而 $binary_remote_addr 的長度為 4 bytes,會(huì)話信息的長度為 32 bytes。
當(dāng)區(qū)的大小為 1M 的時(shí)候,大約可以記錄 32000 個(gè)會(huì)話信息(一個(gè)會(huì)話占用 32 bytes)。
3)HttpLimitReqest模塊
該模塊可限制給定會(huì)話的請(qǐng)求數(shù)。
http { 
limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;
    server {
        location /search/ {
            limit_req   zone=one burst=5; #允許用戶平均每秒不超過1個(gè)請(qǐng)求,突發(fā)不超過5個(gè)查詢
        }
    }
}
4)StubStatus模塊
該模塊能夠獲取Nginx自上次啟動(dòng)以來的工作狀態(tài),此模塊非核心模塊,需要在編譯的時(shí)候手動(dòng)添加編譯參數(shù)--with-http_stub_status_module。
location /status {
        stub_status on; #開啟該模塊
        access_log off;
        allow ***.***.230.1; #允許訪問的ip地址
        deny all; #拒絕所有ip地址訪問
}
5)proxy模塊
  • proxy_pass http://itower;

  • proxy_redirect default; #默認(rèn)配置為default,建議默認(rèn)即可;如果設(shè)置off,則將禁止所有的proxy_redirect指令;

  • proxy_buffering off;

  • proxy_connect_timeout 600; #向后端服務(wù)器等待建立連接的超時(shí)時(shí)間; 單位s;

  • proxy_set_header Host $host:$server_port;

  • proxy_send_timeout 600; #向后端服務(wù)器發(fā)送write請(qǐng)求時(shí)等待的超時(shí)時(shí)間; 單位s;

  • proxy_read_timeout 600; #向后端服務(wù)器發(fā)送read請(qǐng)求時(shí)等待的超時(shí)時(shí)間; 單位s;

  • proxy_buffer_size 8k; #用于配置接收一次后端服務(wù)器的響應(yīng)數(shù)據(jù)的proxy buffer的個(gè)數(shù)和每個(gè)buffer的大??;

  • proxy_cache first; #開啟緩存,結(jié)合http塊中的proxy_cache_path使用;

  • proxy_cache_vaild 200 1m; #表示為狀態(tài)碼為200的數(shù)據(jù)緩存1分鐘,結(jié)合http塊中的proxy_cache_path使用。





本文作者:劉娜

本文來源:IT那活兒(上海新炬王翦團(tuán)隊(duì))

?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/129618.html

相關(guān)文章

  • 11 個(gè) Nginx 參數(shù)性能優(yōu)化工作

    摘要:配置如下指令是設(shè)定的工作模式及連接數(shù)上限。指令用來指定的工作模式。該參數(shù)默認(rèn)是,建議開啟。配置進(jìn)程的最大打開文件數(shù)調(diào)整配置進(jìn)程的最大打開文件數(shù),這個(gè)控制連接數(shù)的參數(shù)為。但副作用是資源更新可能無法及時(shí)。 工作上,需要配置 Nginx,要投入生產(chǎn)使用,做了一點(diǎn)優(yōu)化工作,加上以前也經(jīng)常折騰 Nginx,故記下一些優(yōu)化工作。 優(yōu)化 Nginx 進(jìn)程數(shù)量 配置參數(shù)如下: worker_proce...

    zebrayoung 評(píng)論0 收藏0
  • 高并發(fā)場景中nginx優(yōu)化方案

    摘要:本文主要從以下幾點(diǎn)講解如何優(yōu)化,以增強(qiáng)高并場景中的吞吐量。系統(tǒng)可通過命令查看核數(shù),假如為,則指單個(gè)進(jìn)程能并發(fā)處理的最大連接數(shù),包含了所有的鏈接不僅僅來源于客戶端,默認(rèn)值是,在一些瞬間并發(fā)量較高的場景中,這個(gè)值是遠(yuǎn)遠(yuǎn)不夠用的。 本文主要從以下幾點(diǎn)講解如何優(yōu)化Nginx,以增強(qiáng)高并場景中Nginx的吞吐量。 調(diào)整worker_processes和worker_connections參數(shù) ...

    EsgynChina 評(píng)論0 收藏0
  • 前端性能優(yōu)化與上線

    摘要:看下狀態(tài)可以看到我已經(jīng)有一些鏡像了我已經(jīng)刪除了拉鏡像正常即可,中間那段是中國鏡像源,我們成功下來了的鏡像。攻破像我這樣屌絲的服務(wù)器一般都買的,大的資源文件不住,一個(gè)動(dòng)輒的文件這很蛋疼,不上很難受。 4000字長文,多圖預(yù)警?。?!流量慎入!! 性能優(yōu)化 - 屌絲前端性能優(yōu)化、上線一條龍 大家好我又來了,本章給大家?guī)淼膬?nèi)容是:上線和上線后的性能優(yōu)化 項(xiàng)目地址 實(shí)戰(zhàn)預(yù)覽地址 實(shí)戰(zhàn)項(xiàng)目地址...

    wupengyu 評(píng)論0 收藏0
  • nginx網(wǎng)站性能優(yōu)化篇(4)】理解nginx的高并發(fā)原理及其配置調(diào)優(yōu)

    摘要:使用了多路復(fù)用技術(shù)的,就成了并發(fā)事件驅(qū)動(dòng)的服務(wù)器。進(jìn)程主要負(fù)責(zé)收集分發(fā)請(qǐng)求。同時(shí)進(jìn)程也負(fù)責(zé)監(jiān)控的狀態(tài),保證高可靠性進(jìn)程一般設(shè)置為跟核心數(shù)一致。所以才使得支持更高的并發(fā)。配置調(diào)優(yōu)調(diào)整指要生成的數(shù)量最佳實(shí)踐是每個(gè)運(yùn)行個(gè)工作進(jìn)程。 Nginx 是如何實(shí)現(xiàn)高并發(fā)的? Nginx 采用的是多進(jìn)程(單線程) & 多路IO復(fù)用模型。使用了 I/O 多路復(fù)用技術(shù)的 Nginx,就成了并發(fā)事件驅(qū)動(dòng)的服務(wù)...

    CODING 評(píng)論0 收藏0
  • Oracle APEX 系列文章5:在阿里云上打造屬于你自己的APEX完整開發(fā)環(huán)境 (進(jìn)一步優(yōu)化)

    摘要:優(yōu)化刪除自帶的不必要的文件是有必要的,最大限度保證系統(tǒng)安全。所以我們要對(duì)進(jìn)行必要的修改,讓等待數(shù)據(jù)庫啟動(dòng)完畢再啟動(dòng)。 showImg(https://segmentfault.com/img/remote/1460000014711637?w=1010&h=276); 本文是鋼哥的Oracle APEX系列文章中的第五篇,完整 Oracle APEX 系列文章如下: Oracle A...

    NervosNetwork 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<