亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 網(wǎng)站 > Nginx > 正文

nginx keepalive的具體使用

2024-08-30 12:29:56
字體:
供稿:網(wǎng)友

默認(rèn)http1.1協(xié)議的請(qǐng)求頭是默認(rèn)開啟keepalive,如圖:

nginx,keepalive

那什么是keepalive?作用是什么?

keepalive是在TCP中一個(gè)可以檢測(cè)死連接的機(jī)制,作用是保持socket長(zhǎng)連接不被斷開,屬于tcp層的功能,并不屬于應(yīng)用層。

TCP層怎么做到保持長(zhǎng)連接的呢?

先看keepalive的用法:有三個(gè)參數(shù),開放給應(yīng)用層使用

sk->keepalive_probes:探測(cè)次數(shù),重試次數(shù)sk->keepalive_time 探測(cè)的心跳間隔,TCP鏈接在多少秒之后沒有數(shù)據(jù)報(bào)文傳輸啟動(dòng)探測(cè)報(bào)文sk->keepalive_intvl 探測(cè)間隔,未收到回復(fù)時(shí),重試的時(shí)間間隔

默認(rèn)配置查看:

[***@*** ~]$ cat /proc/sys/net/ipv4/tcp_keepalive_time7200[***@*** ~]$ cat /proc/sys/net/ipv4/tcp_keepalive_intvl75[***@*** ~]$ cat /proc/sys/net/ipv4/tcp_keepalive_probes9

使用方法:

int keepalive = 1; // 開啟keepalive屬性int keepidle = 60; // 如該連接在60秒內(nèi)沒有任何數(shù)據(jù)往來,則進(jìn)行探測(cè)int keepinterval = 5; // 探測(cè)時(shí)發(fā)包的時(shí)間間隔為5 秒int keepcount = 3; // 探測(cè)嘗試的次數(shù)。如果第1次探測(cè)包就收到響應(yīng)了,則后2次的不再發(fā)。并且清零該計(jì)數(shù)setsockopt(rs, SOL_SOCKET, SO_KEEPALIVE, (void *)&keepalive , sizeof(keepalive ));setsockopt(rs, SOL_TCP, TCP_KEEPIDLE, (void*)&keepidle , sizeof(keepidle ));setsockopt(rs, SOL_TCP, TCP_KEEPINTVL, (void *)&keepinterval , sizeof(keepinterval ));setsockopt(rs, SOL_TCP, TCP_KEEPCNT, (void *)&keepcount , sizeof(keepcount ));

應(yīng)用層這么設(shè)置后,會(huì)把默認(rèn)配置覆蓋,走手動(dòng)設(shè)置的配置。

對(duì)于一個(gè)已經(jīng)建立的tcp連接。如果在keepalive_time時(shí)間內(nèi)雙方?jīng)]有任何的數(shù)據(jù)包傳輸,則開啟keepalive功能的一端將發(fā)送 keepalive數(shù)據(jù)心跳包,若沒有收到應(yīng)答,則每隔keepalive_intvl時(shí)間再發(fā)送該數(shù)據(jù)包,發(fā)送keepalive_probes次。一直沒有 收到應(yīng)答,則發(fā)送rst包關(guān)閉連接。若收到應(yīng)答,則將計(jì)時(shí)器清零。

抓包驗(yàn)證tcp心跳包內(nèi)容

nginx,keepalive

根據(jù)抓包繼續(xù)分析keepalive發(fā)送及回復(fù)的心跳包內(nèi)容:

tcp頭部結(jié)構(gòu)體源碼為:

typedef struct _TCP_HEADER{ short m_sSourPort;          // 源端口號(hào)16bit short m_sDestPort;           // 目的端口號(hào)16bit unsigned int m_uiSequNum;      // req字段 序列號(hào)32bit unsigned int m_uiAcknowledgeNum; //ack字段 確認(rèn)號(hào)32bit short m_sHeaderLenAndFlag;     // 前4位:TCP頭長(zhǎng)度;中6位:保留;后6位:標(biāo)志位 short m_sWindowSize;         //win字段 窗口大小16bit short m_sCheckSum;          // 檢驗(yàn)和16bit short m_surgentPointer;        // 緊急數(shù)據(jù)偏移量16bit}__attribute__((packed))TCP_HEADER, *PTCP_HEADER;

看發(fā)送的心跳包內(nèi)容:

0000 d4 6d 50 f5 02 7f f4 5c  89 cb 35 29 08 00    //mac頭 14字節(jié):                         45 00 // ip頭 20字節(jié) :0010 00 28 10 f4 00 00 40 06  5b dd ac 19 42 76 0a b30020 14 bd      e4 4a 1f 7c 32 7e  7a cb 4c bc 55 08 50 10  // tcp頭 20字節(jié) 0030 10 00 3f 00 00 00//分析tcp頭部?jī)?nèi)容e4 4a //源端口號(hào)16bit 10進(jìn)制為:58442 1f 7c //目的端口號(hào)16bit 10進(jìn)制為 : 8060 32 7e 7a cb // req字段 序列號(hào)32bit 10進(jìn)制為 : 4c bc 55 08 // ack字段 確認(rèn)號(hào)32bit 5 // 前4位:TCP頭長(zhǎng)度 5*4 =20 字節(jié) 沒問題 0 10 /// 中6位:保留;后6位:標(biāo)志位 10 代表倒數(shù)第5位為1, 標(biāo)識(shí)改tcp包為 ACK 確認(rèn)包 0030 10 00 3f 00 00 00 

繼續(xù)看回復(fù)的心跳包內(nèi)容 :

0000 f4 5c 89 cb 35 29 d4 6d 50 f5 02 7f 08 00 45 00 0010 00 34 47 28 40 00 36 06 ef 9c 0a b3 14 bd ac 19 0020 42 76 // 前面數(shù)據(jù)不解讀 1f 7ce4 4a4c bc 55 0832 7e 7a cc8// TCP頭長(zhǎng)度為8 * 4 = 32 除了頭部 還有 選項(xiàng)數(shù)據(jù) 12字節(jié) 0 10  // 中6位:保留;后6位:標(biāo)志位 10 代表倒數(shù)第5位為1, 標(biāo)識(shí)該tcp包為 ACK 確認(rèn)包 0030 01 3f //win字段 窗口大小16bit4e 0d // 檢驗(yàn)和16bit00 00 // 緊急數(shù)據(jù)偏移量16bit01 01 08 0a 00 59 be 1c 39 13 0040 cf 12 // 選項(xiàng)數(shù)據(jù) 12字節(jié) 

由上可以看出,tcp維持長(zhǎng)連接的心跳包是由瀏覽器向服務(wù)器先出發(fā)送一個(gè)ACK包,然后服務(wù)器再回復(fù)一個(gè)ACK包,且?guī)Я诉x項(xiàng)數(shù)據(jù)

nginx會(huì)怎么處理keepalive請(qǐng)求,都會(huì)做哪些事情?

首先做的是版本判斷 :http協(xié)議版本低于1.1時(shí),該鏈接的keepalive置為0if (r->http_version < NGX_HTTP_VERSION_11) {  r->keepalive = 0;} ngx_http_process_connection 函數(shù)中 ngx_http_request_t 中帶有keep-alive則把改鏈接標(biāo)識(shí)起來 if (ngx_strcasestrn(h->value.data, "keep-alive", 10 - 1)) {  r->headers_in.connection_type = NGX_HTTP_CONNECTION_KEEP_ALIVE;}ngx_http_handler函數(shù)中對(duì)r->headers_in.connection_type 判斷,給r->keepalive賦值為1  switch (r->headers_in.connection_type) {  case NGX_HTTP_CONNECTION_KEEP_ALIVE:    r->keepalive = 1;    break;  }ngx_configure_listening_sockets函數(shù)中,當(dāng)keepalive為1時(shí),對(duì)該連接開啟KEEPALIVE,之后tcp底層就會(huì)對(duì)該連接fd做檢測(cè)死連接的機(jī)制,保持長(zhǎng)連接,不斷開。if (ls[i].keepalive) {  value = (ls[i].keepalive == 1) ? 1 : 0;  if (setsockopt(ls[i].fd, SOL_SOCKET, SO_KEEPALIVE,//開啟keepalive功能          (const void *) &value, sizeof(int))    == -1)  }

nginx什么時(shí)候長(zhǎng)連接會(huì)斷開呢?

在nginx通過 setsockopt(ls[i].fd, SOL_SOCKET, SO_KEEPALIVE,(const void *) &value, sizeof(int))開啟keepalive后,會(huì)始終和客戶端保持長(zhǎng)連接,如此會(huì)出現(xiàn)一個(gè)很嚴(yán)峻的問題,每個(gè)woker的能保持的連接數(shù)是有限的(ep = epoll_create(cycle->connection_n / 2); cycle->connection_n / 2 為epoll能管理的fd上限),如此一來,連接數(shù)很快就被耗盡,這時(shí)候nginx應(yīng)該怎么處理 ?

為了找到這個(gè)答案,我們來看nginx關(guān)于keeoalive的兩個(gè)配置參數(shù)

keepalive_timeout

keepalive_timeout timeout [header_timeout];

第一個(gè)參數(shù):設(shè)置keep-alive客戶端連接在服務(wù)器端保持開啟的超時(shí)值(默認(rèn)75s);值為0會(huì)禁用keep-alive客戶端連接;

第二個(gè)參數(shù):可選、在響應(yīng)的header域中設(shè)置一個(gè)值“Keep-Alive: timeout=time”;通??梢圆挥迷O(shè)置;

注:keepalive_timeout默認(rèn)75s

keepalive_requests

keepalive_requests指令用于設(shè)置一個(gè)keep-alive連接上可以服務(wù)的請(qǐng)求的最大數(shù)量,當(dāng)最大請(qǐng)求數(shù)量達(dá)到時(shí),連接被關(guān)閉,值為0會(huì)也禁用keep-alive客戶端連接;。默認(rèn)是100。
答案顯而易見,通過 keepalive_timeout keepalive_requests 來管理長(zhǎng)連接,

  • 當(dāng)一個(gè)tcp連接存活時(shí)間超過 keepalive_timeout 時(shí)則會(huì)被close掉,nginx的具體實(shí)現(xiàn),是通過定時(shí)器來做的
  • 當(dāng)一個(gè)tcp連接最大情書數(shù)超過 keepalive_requests 時(shí)則也會(huì)被close掉

通過這兩個(gè)機(jī)制來保證每個(gè)worker的連接數(shù)不會(huì)超過epoll所能管理的數(shù)目。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到服務(wù)器教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
亚洲一区免费观看| avove在线观看| 美女视频一区在线观看| 亚洲一二三四2021不卡| 久久频这里精品99香蕉| 天堂一区二区三区| 亚洲国产精品免费在线观看| 97人人做人人爽香蕉精品| 在线免费国产| av在线不卡精品| 黄色成人在线看| 小早川怜子久久精品中文字幕| 日韩亚洲精品电影| 成人免费视频入口| 97人人在线视频| 欧美大片免费观看在线观看网站推荐| 污网站免费观看| 欧区一欧区二欧区三| 中文字幕在线看人| 欧美国产视频在线| 无码aⅴ精品一区二区三区| 一级黄色片在线| 欧美大片在线观看一区二区| 亚洲国产裸拍裸体视频在线观看乱了| 精品无码久久久久成人漫画| 亚洲激情视频在线观看| 91av在线不卡| 日韩三级高清在线| 国产老妇伦国产熟女老妇视频| 美女视频黄a视频全免费观看| 黄色一级片免费看| 69成人精品免费视频| 亚洲综合一区二区精品导航| 国产精品一二三| 欧美精品久久久久久久免费观看| 精品国模一区二区三区| www.国产高清| 色在线中文字幕| 麻豆精品永久免费视频| 亚洲人成网站色ww在线| 国产精品成人免费观看| 一区二区三区不卡在线视频| 四虎影院中文字幕| 成年人在线免费| 污视频网站免费| 亚洲午夜精品一区二区国产| 亚洲精品国产成人久久av盗摄| 日韩精品亚洲专区| seba5欧美综合另类| 欧美日韩综合久久| 超碰超碰在线| 五月激情六月婷婷| 一区二区欧美在线观看| 国产一区二区三区四区五区传媒| 97xxxxx| 一本一生久久a久久精品综合蜜| gogo在线高清视频| 久久综合狠狠综合| 精品无码人妻一区二区免费蜜桃| 国产免费成人在线| 国产视频久久| 人人澡人人添人人爽一区二区| 黄色精品一区二区| 亚洲精品在线国产| 欧美日韩黄色一区二区| 日韩国产高清污视频在线观看| 91麻豆免费在线观看| 国产精品麻豆99久久久久久| 亚洲精品视频网上网址在线观看| 91国在线观看| 2020色愉拍亚洲偷自拍| 国产免费又粗又猛又爽| 国产亚洲欧美日韩在线观看一区二区| 久久久中精品2020中文| 成人aa视频在线观看| 午夜久久久久久久久久久| 在线免费视频一区二区| 国产精品久久毛片a| 3d欧美精品动漫xxxx无尽| 久青草国产在线| 97在线精品国自产拍中文| 国产免费黄色片| 伊人久久大香伊蕉在人线观看热v| 粉嫩欧美一区二区三区高清影视| 激情六月婷婷综合| 欧美伊人精品成人久久综合97| av电影在线地址| 日韩欧美影院| 欧美超强性xxxxx| 中文字幕在线视频久| 国产在线播放91| 久久网免费视频| 91福利视频网| 无码人妻一区二区三区免费n鬼沢| 蜜桃视频网站www| 欧美高清视频手机在在线| 自拍偷拍亚洲色图欧美| 精品99在线观看| 亚洲欧洲一区二区三区在线观看| 中日韩免视频上线全都免费| 成人午夜视频在线观看免费| 成年人免费网站| 日本视频在线播放| 欧美精品第一区| 日韩久久精品一区二区三区| 国产精品一品| 在线影视一区二区三区| 精品卡1卡2卡三卡免费网站| www.狠狠干| 青花影视在线观看免费高清| 最近2019年手机中文字幕| 久久人妻一区二区| 黄色成人在线播放| 国产一区二区久久| 蜜臀av一区二区| 欧美熟乱15p| 欧美一区二区三区黄片| 久久夜色精品| 精品视频在线免费观看| 拍拍拍在线观看视频免费| 黄网站在线观看永久免费| 粉嫩久久99精品久久久久久夜| а√天堂中文在线资源8| 91精品人妻一区二区| a资源在线观看| 国产小视频91| 日韩欧美成人区| 亚洲人人夜夜澡人人爽| 国产成人鲁鲁免费视频a| 四虎精品一区二区三区| 婷婷激情综合网| av蜜臀在线| 国产老女人乱淫免费| 色综合视频一区二区三区日韩| 岛国大片在线观看| 久久久国产精品久久久| 国产一区二区色| 国产午夜精品一区理论片飘花| 密臀av一区二区三区| 国产中文字幕一区二区| 国产1区2区3区在线| 国产一区二区三区免费在线观看| 91精品久久久久久久久久不卡| 欧洲av无码放荡人妇网站| 欧美1—12sexvideos| 久久久久一区二区三区四区| 一二三区不卡| 久草在线资源站资源站| 国产女人伦码一区二区三区不卡| 亚洲美女在线免费观看| 精品无人区一区二区三区竹菊| 国产精品久久久久久亚洲毛片| 五月天婷婷久久| 狠狠干成人综合网| 国产有码在线一区二区视频| 久久久久久久久99精品大| 亚洲a∨精品一区二区三区导航| 免费毛片一区二区三区久久久| 九九热这里有精品| 亚洲色图偷拍视频| 久久久亚洲精品石原莉奈| 中文字幕在线观看免费视频| 黄色的视频在线免费观看| 免费久久网站| 理论片在线不卡免费观看| 猫咪成人官网| 一区二区在线观看不卡| 国产精品视频区| 国产女主播一区| 国内免费精品永久在线视频| 国产99精品一区| 五月开心六月丁香综合色啪| 日韩三级小视频| 日韩黄色影片| 一级黄色免费| 99国产精品久久久久| 午夜精品久久久久久久99老熟妇| 国产精品17p| 精品一性一色一乱农村| 欧美videos大乳护士334| 欧美福利视频在线观看| 国产一区二区三区奇米久涩| 在线观看h片| 天天干天天爽| 综合精品久久久| 成人黄色网页| 亚洲激情在线视频| 亚洲一区国产视频| 蜜臀av性久久久久蜜臀aⅴ| 欧美在线视频免费观看| 黄色av免费看| 美女久久久久久久久久久| 91女人18毛片水多国产| yw3121.龙物视频永不失联| 国产精品久久久久久超碰| 国产高清不卡无码视频| 成人免费网站在线观看视频| www.成人av.com| 精品一区二三区| 91精品国产一区二区三区| 日韩欧美国产一区在线观看| 日本不卡高字幕在线2019| 99在线观看视频免费| 国产综合亚洲精品一区二| 中文一区一区三区高中清不卡| 国产精品乱看| 羞羞视频在线免费国产| 二区三区在线视频| 欧美色成人综合| 欧美成人精品一区二区三区在线看| 亚洲美女福利视频| 亚洲综合不卡| 国产精品羞羞答答在线观看| 精品网站999www| 美女视频黄a视频全免费观看| 中文字字幕一区二区三区四区五区| 精品人妻人人做人人爽| 成人性生交大片免费看中文视频| 欧美婷婷久久五月精品三区| 国产精品久久久久久久久久久久久久久| 一级毛片免费观看| 国产成人一区二区三区影院| 欧美一级视频精品观看| 久久精品免费看| 久久久久久五月天久久久久久久久| 欧美日韩久久久| 欧美一区二区播放| 在线精品一区二区三区| 亚洲图片 自拍偷拍| 亚洲一区二区三区四区五区黄| 成人激情午夜影院| 日韩国产在线看| 黄色网页在线| 日韩一区和二区| 一区二区三区不卡视频在线观看| 久久午夜夜伦鲁鲁一区二区| 久久久久久77777| 国产欧美一区二区精品久导航| 日韩三级在线播放| 国产网站一区二区| 国产在线视精品麻豆| 成年免费网站| 日本在线观看免费视频| 久久精品日产第一区二区三区精品版| 美女少妇一区二区| 成人综合在线观看| 久久久久久久久99精品| 毛片aaaaaa| 久久99精品久久久水蜜桃| av观看在线免费| a在线视频播放观看免费观看| 日本黄色片在线观看| 好吊色欧美一区二区三区四区| 蜜臀av无码一区二区三区| 97精品国产97久久久久久| 亚洲免费av观看| 欧美久久综合| 亚洲国产精品一区二区久久恐怖片| 澳门av一区二区三区| 一区二区成人av| 国产精品免费在线播放| 免费无码毛片一区二三区| 国产在线一二| 亚洲欧美激情视频在线观看一区二区三区| 精品女同一区二区三区| 亚洲成人精品一区二区| 欧美一区二区三区……| 欧美二区在线| 黄色av免费播放| 亚洲午夜精品一区| 老汉av免费一区二区三区| 久久国产精品无码一级毛片| 成网站在线观看人免费| 国产国语性生话播放| 97国产在线| 国产精品jizz| 91se在线观看| 国产精品秘入口| 午夜神马福利影院| 亚洲精品乱码久久久久久久久久久久| 国产乱子精品一区二区在线观看| 激情综合在线观看| 青青在线精品| 亚洲韩国欧洲国产日产av| 国产裸体歌舞团一区二区| 看全色黄大色大片免费久久久| 欧美一区二区视频网站| 一本色道综合亚洲| 精品二区三区线观看| 激情欧美国产欧美| 日本在线观看一区| 8x8ⅹ国产精品一区二区二区| 久久久久免费看| videos性欧美另类高清| 日韩av毛片| 亚洲欧美一区二区精品久久久| 国产尤物一区二区三区| 日本一级淫片演员| 欧洲一区二区日韩在线视频观看免费| 麻豆传媒在线免费| 免费亚洲电影| 91在线免费看网站| 日韩av中文字幕第一页| 久草av在线播放| 亚洲人成电影在在线观看网色| 91麻豆精品国产91久久久使用方法| 国产日韩精品电影| 亚洲精品在线视频免费观看| 国产成人在线免费观看视频| 中文字幕免费视频观看| 欧美午夜免费电影| 日韩a级作爱片一二三区免费观看| 欧美日韩中文字幕在线| 国产高清在线观看| 亚洲精品国产动漫| 日韩欧洲国产| 婷婷久久综合九色综合伊人色| 欧美日韩高清一区二区三区| 一区精品在线| 日韩视频一区在线观看| 18禁一区二区三区| 香蕉视频免费在线| 永久免费看片直接| 亚洲伊人春色| 日韩欧美国产精品一区二区三区| 久久精品视频导航| 99久久综合狠狠综合久久止| 91嫩草国产丨精品入口麻豆|