成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > nginx中共享內(nèi)存的使用詳解

nginx中共享內(nèi)存的使用詳解

熱門標(biāo)簽:高德地圖標(biāo)注無(wú)營(yíng)業(yè)執(zhí)照 智能電話機(jī)器人線路 賀州市地圖標(biāo)注app 百度地圖標(biāo)注要不要錢 江蘇電銷外呼防封系統(tǒng)是什么 廣州電銷機(jī)器人系統(tǒng)圖 東莞人工智能電銷機(jī)器人供應(yīng)商 金融行業(yè)外呼線路 長(zhǎng)沙開福怎么申請(qǐng)400電話

在nginx的進(jìn)程模型下,類似流量統(tǒng)計(jì)、流量控制、數(shù)據(jù)共享、等需要多個(gè)工作進(jìn)程共同配合完成任務(wù),共享內(nèi)存是一個(gè)重要的進(jìn)程通訊的方案。本文介紹在nginx的代碼中與共享內(nèi)存相關(guān)的功能,包括ngx_shmem與ngx_slab的使用與注意事項(xiàng),但不包括ngx_slab中實(shí)現(xiàn)的內(nèi)存管理算法。

ngx_shmem的使用

ngx_shmem.c/h文件只是對(duì)mmap()/munmap()系統(tǒng)調(diào)用或者shmget()/shmdt()的一個(gè)很簡(jiǎn)單的封裝。實(shí)現(xiàn)了ngx風(fēng)格的基礎(chǔ)庫(kù),可以申請(qǐng)和釋放一段連續(xù)的共享內(nèi)存空間。一般用于固定長(zhǎng)度的共享數(shù)據(jù)使用,使用過(guò)程中數(shù)據(jù)長(zhǎng)度固定不會(huì)伸縮。

typedef struct {
  u_char   *addr;
  size_t    size;
  ...
} ngx_shm_t;
ngx_int_t ngx_shm_alloc(ngx_shm_t *shm);
void ngx_shm_free(ngx_shm_t *shm);

在ngxin中共享內(nèi)存的使用流程,一般是由master進(jìn)程創(chuàng)建,worker進(jìn)程通過(guò)繼承的方式獲得內(nèi)存指針。

關(guān)于ngx_shmem的使用,可以參考ngx_event_module_init()中部分片段,這部分代碼在共享內(nèi)存中創(chuàng)建了若干個(gè)變量,用于記錄各個(gè)狀態(tài)(accepted/reading/writing...)的請(qǐng)求數(shù)量,并在ngx_event_module中的幾個(gè)關(guān)鍵事件入口對(duì)這幾個(gè)變量進(jìn)行加減統(tǒng)計(jì)操作。實(shí)現(xiàn)統(tǒng)計(jì)所有worker進(jìn)程當(dāng)前的請(qǐng)求狀態(tài)。

shm.size = size;
ngx_str_set(&shm.name, "nginx_shared_zone");
shm.log = cycle->log;

if (ngx_shm_alloc(&shm) != NGX_OK) {
  return NGX_ERROR;
}

shared = shm.addr;
...
ngx_stat_accepted = (ngx_atomic_t *) (shared + 3 * cl);
ngx_stat_handled = (ngx_atomic_t *) (shared + 4 * cl);
ngx_stat_requests = (ngx_atomic_t *) (shared + 5 * cl);
ngx_stat_active = (ngx_atomic_t *) (shared + 6 * cl);
ngx_stat_reading = (ngx_atomic_t *) (shared + 7 * cl);
ngx_stat_writing = (ngx_atomic_t *) (shared + 8 * cl);
ngx_stat_waiting = (ngx_atomic_t *) (shared + 9 * cl);

關(guān)于這個(gè)功能的更多細(xì)節(jié),可以查看代碼中的NGX_STAT_STUB宏定義相關(guān)代碼與ngx_http_stub_status_module。

ngx_slab的使用

ngx_shmem是一層極簡(jiǎn)的封裝,實(shí)現(xiàn)了共享內(nèi)存的基本功能。但我們程序中大部分的場(chǎng)景共享數(shù)據(jù)并不會(huì)一個(gè)固定大小的結(jié)構(gòu),而更多是像ngx_array、ngx_list、ngx_queue、ngx_rbtree這類大小可以變化的數(shù)據(jù)結(jié)構(gòu)。

我們期望能有像ngx_pool_t一樣可以動(dòng)態(tài)申請(qǐng)釋放空間一個(gè)內(nèi)存池。ngx_slab正是一個(gè)這樣的結(jié)構(gòu)體,原理上與系統(tǒng)的malloc()有相識(shí)之處都是通過(guò)一系列算法實(shí)現(xiàn)對(duì)一段段內(nèi)存片段的申請(qǐng)與釋放。只不過(guò)ngx_slab操作的對(duì)象是基于ngx_shmem的共享內(nèi)存。

先看一下ngx_slab的接口

typedef struct {
  ngx_shmtx_t    mutex;
  ...
  void       *data; /* 一般存放從pool中申請(qǐng)獲得的根數(shù)據(jù)地址(pool中第一個(gè)申請(qǐng)的數(shù)據(jù)接口) */
  void       *addr; /* 使用ngx_shmem申請(qǐng)獲得的共享內(nèi)存基地址 */
} ngx_slab_pool_t;

void ngx_slab_init(ngx_slab_pool_t *pool);
void *ngx_slab_alloc(ngx_slab_pool_t *pool, size_t size);
void *ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size);
void *ngx_slab_calloc(ngx_slab_pool_t *pool, size_t size);
void *ngx_slab_calloc_locked(ngx_slab_pool_t *pool, size_t size);
void ngx_slab_free(ngx_slab_pool_t *pool, void *p);
void ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p);

可以看到接口并不復(fù)雜,alloc與calloc的區(qū)別在于是否對(duì)申請(qǐng)獲得的內(nèi)存段清零,_locked結(jié)尾的接口表示操作的pool已經(jīng)是獲取到鎖的。在ngx_slab_pool_t的結(jié)構(gòu)體有一個(gè)ngx_shmtx_t的互斥鎖用于同步多進(jìn)程同時(shí)訪問(wèn)pool的并發(fā)場(chǎng)景。注意ngx_slab_alloc()會(huì)先獲取鎖、然后申請(qǐng)空間、最后釋放鎖。而ngx_slab_alloc_locked()則直接申請(qǐng)空間,認(rèn)為程序已經(jīng)在其他邏輯中獲得鎖了。

在nginx的開發(fā)中使用ngx_shmem一般需要遵循以下初始化流程:

  • 模塊在配置解析過(guò)程中調(diào)用ngx_shared_memory_add()接口,注冊(cè)一段共享內(nèi)存。提供共享內(nèi)存大小與內(nèi)存初始化的回調(diào)函數(shù)。
  • 框架在ngx_init_cycle()中使用ngx_shmem申請(qǐng)內(nèi)存,并初始化ngx_slab,然后回調(diào)模塊注冊(cè)的初始化函數(shù)
  • 模塊使用ngx_slab的申請(qǐng)/是否接口

在這個(gè)流程中,涉及到ngx_shared_memory_add()接口與對(duì)應(yīng)的ngx_shm_zone_t結(jié)構(gòu)體。

struct ngx_shm_zone_s {
  void           *data;
  ngx_shm_t         shm;
  ngx_shm_zone_init_pt   init;
  void           *tag;
  void           *sync;
  ngx_uint_t        noreuse; /* unsigned noreuse:1; */
};
ngx_shm_zone_t *ngx_shared_memory_add(ngx_conf_t *cf, ngx_str_t *name,
  size_t size, void *tag);

其中值得一提的是noreuse屬性,這個(gè)屬性控制了在nginx的reload過(guò)程中是否會(huì)重新申請(qǐng)共享內(nèi)存。

由于關(guān)于ngx_init_cycle()函數(shù)較長(zhǎng),這個(gè)流程可以通過(guò)查找/* create shared memory */這個(gè)注釋或者cycle->shared_memory這個(gè)對(duì)象查看相關(guān)代碼。

關(guān)于ngx_slab更多細(xì)節(jié)的使用,建議可以參考ngx_http_limit_conn_module,這是通過(guò)共享內(nèi)存實(shí)現(xiàn)連接數(shù)限制的模塊,模塊復(fù)雜度底,是一個(gè)很好的參考范例。

 參考資料

深入理解Nginx(第2版) https://book.douban.com/subject/26745255/

ngx_http_limit_conn_module http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html

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

標(biāo)簽:松原 北京 張家界 玉樹 洛陽(yáng) 滄州 永州 廊坊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《nginx中共享內(nèi)存的使用詳解》,本文關(guān)鍵詞  nginx,中,共享,內(nèi)存,的,使用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《nginx中共享內(nèi)存的使用詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于nginx中共享內(nèi)存的使用詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美极品第一页| 美国成人av| 一区二区成人免费视频| 亚洲黄一区二区三区| 欧美精品乱码| 精精国产xxxx视频在线中文版| 丝袜 亚洲 另类 欧美 重口| 国产精品88久久久久久| 国精一区二区| 另类国产ts人妖高潮视频| 一区二区久久精品| 亚洲免费一级电影| 国产全是老熟女太爽了| 51自拍视频在线观看| 翁止熄痒禁伦短文合集免费视频| 国产视频在线观看一区| 日本一区二区乱| 久久精品五月| 久久亚洲精品大全| 亚州av综合色区无码一区| 182在线视频观看| 一本大道香蕉8中文在线视频| 精品一区二区在线播放| 乱码一区二区三区| 日本不卡一二三区黄网| 无人码人妻一区二区三区免费| 色婷婷一区二区三区| 亚洲综合国产精品| 最新av番号| 超碰超碰人人人人精品| 亚洲一区二区三区成人| av一区在线| 日本伊人精品一区二区三区介绍| 日本乱人伦aⅴ精品| 强行糟蹋人妻hd中文| 国产精品美女久久久久久久网站| av不卡免费在线观看| 在线中文字幕视频| 国产传媒久久文化传媒| 国产精品成人一区二区三区吃奶| 亚洲国产人成综合网站| 性直播体位视频在线观看| 亚洲精品乱码久久久久| 久久精品国产精品亚洲红杏| 亚洲伊人成人网| 精品国产123区| 亚洲第一区在线观看| 91高清在线视频| h在线视频免费观看完整版| 国产精品无码久久久久一区二区| 国产中文精品久高清在线不| av网站免费在线播放| 欧美极品aⅴ影院| 亚洲精品一区二区三区中文字幕| 欧美一卡2卡三卡4卡5免费| 欧美aaa视频| 亚洲激情免费观看| 国产一二三在线观看| 在线免费观看一级片| 欧美丝袜丝nylons| 天天干天天草天天| 老牛嫩草一区二区三区日本| 久久久在线观看| 国模一区二区三区| 国产原厂视频在线观看| 国产婷婷一区二区三区| 美女视频黄免费的亚洲男人天堂| 欧美成人禁片在线观看网址| 香蕉亚洲视频| 永久免费毛片在线播放| 欧美粗暴jizz性欧美20| 亚洲精品在线不卡| 成人精品久久av网站| 99精品人妻国产毛片| 精品乱子伦一区二区三区| 亚洲乱码免费伦视频| 91九色精品视频| 国产成人午夜视频网址| 亚洲精品在线视频免费| 亚洲成人精品一区| 欧美特级限制片免费在线观看| 天天射天天爱天天射干| 99国产精品久久久久久久久久久| 国产在线观看免费播放| 日本欧美黄色片| 明星国产一级毛片范冰冰视频| 日本精品久久久久久久久久| 中文字幕在线观看免费视频| 国产一区二区三区乱码| 捆绑调教一区二区三区| 成人av手机在线| 欧美一区二区成人| 国产精品国产三级欧美二区| 黑人糟蹋人妻hd中文字幕| 黑人乱码一区二区三区av| 欧美日韩不卡一区二区| 18视频免费网址在线观看| 成人天堂资源www在线| 丁香影院在线| 欧美成人免费全部观看天天性色| www.黄色网址| 久久精品成人一区二区三区蜜臀| 免费看的av| 迷人的保姆韩国| 久久久久久亚洲精品美女| 无码免费一区二区三区免费播放| 超碰97成人| 欧美黑人国产人伦爽爽爽| 成人在线视频成人| 久久精品aⅴ无码中文字字幕重口| 欧美绝顶高潮抽搐喷水合集| 久久99国产成人小视频| 91精品国偷自产在线电影| 国产在线不卡精品| 欧美mv日韩mv国产网站| jizz在线观看视频| 肥熟一91porny丨九色丨| 国产传媒国产传媒| 91精品视频大全| 成人午夜一级| 美腿丝袜亚洲图片| 99久久777色| 国产成人啪精品午夜在线观看| 久久综合色一本| 欧美综合色免费| 性xxxx丰满孕妇xxxx另类| 无码av免费一区二区三区试看| 国产午夜一区| 欧美日韩午夜| 国产精品高潮呻吟久久av黑人| 手机在线中文字幕| 欧美午夜精品一区二区三区| 日韩国产91| 视频黄页在线| 新片速递亚洲合集欧美合集| 91精品视频大全| 不卡一区二区中文字幕| 亚洲乱码国产乱码精品天美传媒| 亚洲国产欧美一区二区三区同亚洲| 国产乱码精品一区二三赶尸艳谈| 久久99精品国产麻豆婷婷| 96sao精品免费视频观看| 国产在线xxxx| 亚洲第一精品夜夜躁人人爽| 男人插曲女人视频免费| 亚洲精品视频免费在线观看| www.就去干.com| 国产精品mv在线观看| 亚洲老妇色熟女老太| 99久9在线视频| 91精品福利在线一区二区三区| 日韩中文在线中文网三级| 天天插天天色| av线上观看| 波多野结衣一区二区| 久久久久久免费看| 亚洲国产精彩中文乱码av| 国模 一区 二区 三区| 韩国精品主播一区二区在线观看| 久久天天综合| 欧美日韩国产精品一区二区三区| 欧美黑人xxx| 国产精品色婷婷| 国产性xxxx高清| 亚洲精品国产首次亮相| 香蕉大人久久国产成人av| 国产黄色一级网站| 91蜜桃在线免费视频| 免费a在线观看播放| 77777在线| 天堂中文在线官网| 男女做暖暖视频| 国产又黄又大又粗视频| 台湾佬成人网| 好吊妞视频一区二区三区| 欧美日韩国产一二三区| 四虎电影网址| 国产日韩视频一区| 亚洲福利视频免费观看| 精品久久久精品| 亚洲伊人春色| 黄a大片av永久免费| 成人在线视频首页| 日韩一区二区三区免费视频| 伊人手机在线| 自拍偷拍免费精品| 日韩美女在线看免费观看| 欧美成人福利| 妺妺窝人体色www在线下载| 91看片免费| 男女男精品网站| 51蜜桃传媒精品一区二区| 亚洲激情第一区| 免费一级淫片| 国产一区二区在线免费| 国产精品久久久久久久久图文区| 最新国产成人在线观看| 亚洲欧美日韩视频二区| 国产精品va在线播放| 免费黄色av网站| 2019精品视频| 欧美高清中文字幕| 精品亚洲一区二区三区在线观看| 日韩精品一区二区在线| 国产欧美精品一区二区三区介绍| 久久久久久爱| 91久久精品| 欧美日韩国产一区二区三区不卡| 一区二区自拍偷拍| 1区2区视频| 久久99深爱久久99精品| 7777精品伊人久久久大香线蕉最新版| 欧美交换国产一区内射| 亚洲精品国产精品国| 激情深爱一区二区| 日韩成人激情视频| 国产精品自产拍在线观| 麻豆自创视频在线观看| 国产呦系列欧美呦日韩呦| 久久久久久久波多野高潮日日| 国产精品亚洲lv粉色| 亚洲女女做受ⅹxx高潮| 国产精品国产三级国产专区53| 亚洲午夜视频在线观看| 国产色视频在线播放| 亚洲精品国产精品乱码视色| 国产精品v欧美精品v日韩| 免费日韩一区二区三区| www.天天干.com| 久久99精品国产.久久久久久| 欧美黄色录像| 成人天堂入口网站| avtt亚洲| 青青青伊人色综合久久| 久久一区二区三区电影| 色999韩欧美国产综合俺来也| 婷婷激情小说网| 成人黄色大片在线观看| 人妻丰满熟妇aⅴ无码| 精品国产三级a∨在线| 黄污在线观看| 亚洲精品日产aⅴ| 一区中文字幕在线观看| 色婷婷一区二区| 波多野结衣av在线免费观看| 亚洲熟妇无码久久精品| 免费福利在线观看| 国产精品观看在线亚洲人成网| 在线观看免费污视频| av手机免费在线观看| 亚洲第一综合网站| 欧美日韩亚洲视频| 成人情趣片在线观看免费| 强制捆绑调教一区二区| 琪琪第一精品导航| 五十路亲子中出在线观看| 国产欧美日韩中文| 红桃视频在线观看一区二区| 成人免费观看www在线| 2020中文字幕在线播放| 伊人久久久大香线蕉综合直播| 亚洲精品小视频在线观看| 老司机av在线免费看| 欧美日韩视频在线一区二区| 亚洲字幕久久| 人妻体内射精一区二区| 国产69视频在线观看| 久久在线精品视频| 狠狠躁夜夜躁av无码中文幕| 一级黄色大片免费观看| 美女不穿衣服的网站| 91福利区一区二区三区| 国产一级做a爱片久久毛片a| 国产资源在线观看入口av| 国产精品免费观看| 一级做a爱视频| 杨幂一区二区国产精品| 91网址在线观看精品| 亚洲日本成人在线观看| 操她视频在线观看| 久久久国产精品一区二区三区| 中文字幕在线视频网站| 亚洲区免费影片| 久久久久久久久97黄色工厂| 国产人成在线视频| 欧美国产日韩二区| 欧美日本黄视频| 久久精品影视伊人网| 丁香色欲久久久久久综合网| 成人爽a毛片一区二区| 欧洲精品一区色| 小早川怜子痴女在线精品视频| 久久国产一二区| 久久天天躁狠狠躁夜夜躁2014| 一女三黑人理论片在线| 日韩美女免费视频| 美女网站视频色| 亚洲精品网站在线播放gif| av黄色在线观看| 亚洲国产成人久久| 91在线视频免费播放| 97在线视频免费播放| 97在线看免费观看视频在线观看| 欧美一区二区三区不卡视频| 福利一区二区在线观看| 日韩专区一卡二卡| 中文文字幕一区二区三三| 原创真实夫妻啪啪av| 久久综合色一本| 欧美成人精品高清在线播放| 免费不卡亚洲欧美| 国内不卡一区二区三区| 成人网页在线免费观看| 欧美精三区欧美精三区| 毛片久久久久久| 国产男女猛烈无遮挡| 久久精品久久99| 性生活免费网站| 亚洲一线二线三线视频| 久草在线新视觉| 天堂аⅴ在线最新版在线| 日韩毛片免费观看| 亚洲国产三级| 欧美激情网友自拍| 日本福利视频在线观看| 中文字幕中文字幕中文字幕亚洲无线| 黑鬼狂亚洲人videos| 中文字幕在线天堂|