<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Nginx 支持 keep-alive 長(zhǎng)連接

          共 2521字,需瀏覽 6分鐘

           ·

          2020-12-05 21:19

          概念

          Persistent HTTP connections have a number of advantages

          HTTP?協(xié)議采用請(qǐng)求-應(yīng)答模式,當(dāng)使用普通模式,即非?KeepAlive?模式時(shí),每個(gè)請(qǐng)求/應(yīng)答客戶和服務(wù)器都要新建一個(gè)連接,完成之后立即斷開(kāi)連接(HTTP?協(xié)議為無(wú)連接的協(xié)議);當(dāng)使用?Keep-Alive?模式(又稱(chēng)持久連接/連接重用)時(shí),Keep-Alive?功能使客戶端到服務(wù)器端的連接持續(xù)有效,當(dāng)出現(xiàn)對(duì)服務(wù)器的后繼請(qǐng)求時(shí),Keep-Alive?功能避免了建立或者重新建立連接。

          支持?keep alive

          當(dāng)使用?nginx?作為反向代理時(shí),為了支持長(zhǎng)連接,需要做到兩點(diǎn)

          • 從?client?到?nginx?的連接是長(zhǎng)連接

          • 從?nginx?到?server?的連接是長(zhǎng)連接

          保持和?client?的長(zhǎng)連接

          • client?發(fā)送的?HTTP?請(qǐng)求要求?keep alive

          • nginx?設(shè)置上支持?keep alive

          HTTP?配置

          keepalive_timeout

          默認(rèn)?75s,一般情況下也夠用,對(duì)于一些請(qǐng)求比較大的內(nèi)部服務(wù)器通訊的場(chǎng)景,適當(dāng)加大為?120s?或者?300s。第二個(gè)參數(shù)通常可以不用設(shè)置

          第一個(gè)參數(shù)設(shè)置?keep-alive?客戶端連接在服務(wù)器端保持開(kāi)啟的超時(shí)值。值為?0?會(huì)禁用?keep-alive?客戶端連接。可選的第二個(gè)參數(shù)在響應(yīng)的?header?域中設(shè)置一個(gè)值?Keep-Alive: timeout=time。這兩個(gè)參數(shù)可以不一樣

          keepalive_requests

          默認(rèn)?100,對(duì)于?QPS?較高的場(chǎng)景,非常有必要加大這個(gè)參數(shù),以避免出現(xiàn)大量連接被生成再拋棄的情況,減少?TIME_WAIT。這個(gè)參數(shù)的真實(shí)含義是指一個(gè)?keep alive?建立之后,nginx?就會(huì)為這個(gè)連接設(shè)置一個(gè)計(jì)數(shù)器,記錄這個(gè)?keep alive?的長(zhǎng)連接上已經(jīng)接收并處理的客戶端請(qǐng)求的數(shù)量。如果達(dá)到這個(gè)參數(shù)設(shè)置的最大值時(shí),則?nginx?會(huì)強(qiáng)行關(guān)閉這個(gè)長(zhǎng)連接,逼迫客戶端不得不重新建立新的長(zhǎng)連接

          用于設(shè)置一個(gè)?keep-alive?連接上可以服務(wù)的請(qǐng)求的最大數(shù)量。當(dāng)最大請(qǐng)求數(shù)量達(dá)到時(shí),連接被關(guān)閉

          保持和?server?的長(zhǎng)連接

          http {    keepalive_timeout 100s;    keepalive_requests 1000;
          upstream dev.proxy.com { server 192.168.10.11:8081 weight=1 max_fails=2 fail_timeout=30s; server 192.168.10.10:8081 weight=1 max_fails=2 fail_timeout=30s; keepalive 300; }
          server { listen 80 default_server; listen [::]:80 ipv6only=on; server_name dev.proxy.com; charset utf-8;
          location / { index index.php index.html index.htm; proxy_pass http://dev.proxy.com/; proxy_set_header Host $Host; proxy_set_header x-forwarded-for $remote_addr; proxy_set_header X-Real-IP $remote_addr; add_header Cache-Control no-store; add_header Pragma no-cache; proxy_http_version 1.1; proxy_set_header Connection "";
          client_max_body_size 3072k; client_body_buffer_size 128k; } }}

          合理的設(shè)置?keep-alive?值可以非常有效的緩沖請(qǐng)求和應(yīng)答不均勻,緩解連接數(shù)量的反復(fù)震蕩

          連接數(shù)量震蕩的兩個(gè)表現(xiàn)

          • 連接不夠用,造成新建連接

          • 連接空閑,造成關(guān)閉連接

          統(tǒng)計(jì)在一臺(tái)前端機(jī)上高峰時(shí)間 TCP 連接的情況

          $ netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}'

          導(dǎo)致?nginx?端出現(xiàn)大量?TIME_WAIT?的兩種情況

          • keepalive_requests?設(shè)置比較小,高并發(fā)下超過(guò)此值后?nginx?會(huì)強(qiáng)制關(guān)閉和客戶端保持的keepalive?長(zhǎng)連接(主動(dòng)關(guān)閉連接后導(dǎo)致?nginx?出現(xiàn)?TIME_WAIT)

          • keepalive?設(shè)置的比較小(空閑數(shù)太小),導(dǎo)致高并發(fā)下?nginx?會(huì)頻繁出現(xiàn)連接數(shù)震蕩(超過(guò)該值會(huì)關(guān)閉連接),不停的關(guān)閉開(kāi)啟和后端?server?保持的?keep-alive?長(zhǎng)連接

          導(dǎo)致后端?server?端出現(xiàn)大量?TIME_WAIT?的情況

          • nginx?沒(méi)有打開(kāi)和后端的長(zhǎng)連接,即:沒(méi)有設(shè)置?proxy_http_version 1.1;?和proxy_set_header Connection "";?從而導(dǎo)致后端?server?每次關(guān)閉連接,高并發(fā)下就會(huì)出現(xiàn)?server?端出現(xiàn)大量?TIME_WAIT

          瀏覽 55
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  全球亚洲精品视频 | 成人吧欧美色图 | 日韩免费操逼视频 | 亚洲无码黄片 | 五月天久操|