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

首頁 > 網站 > Nginx > 正文

詳解Nginx中基本的內存池初始化配置

2024-08-30 12:28:11
字體:
來源:轉載
供稿:網友

ngx_cycle 的初始化
整個初始化過程中,最重要的就是全局變量 nginx_cycle 的初始化,很多變量都是在這個過程中初始化的

nginx_cycle 又是通過兩個局部變量 init_cycle 和 cycle 實現初始化的

事實上,日志初始化也可以算是對 nginx_cyle 的初始化,因為在代碼中接下來馬上要發生的就是一個賦值

ngx_memzero(&init_cycle, sizeof(ngx_cycle_t));init_cycle.log = log;ngx_cycle = &init_cycle;// 創建內存池 1KBinit_cycle.pool = ngx_create_pool(1024, log);if (init_cycle.pool == NULL) { return 1;}// 保存調用參數到全局變量,init_cycle 只用于提供 log 參數if (ngx_save_argv(&init_cycle, argc, argv) != NGX_OK) { return 1;}// 保存配置文件路徑、程序運行路徑、調用參數到 init_cycleif (ngx_process_options(&init_cycle) != NGX_OK) { return 1;}// 獲取操作系統信息、CPU信息、最大連接數、是否支持非阻塞連接等if (ngx_os_init(log) != NGX_OK) { return 1;}/* * ngx_crc32_table_init() requires ngx_cacheline_size set in ngx_os_init() */// 對齊校驗表if (ngx_crc32_table_init() != NGX_OK) { return 1;}// 獲取所有繼承連接fd的相關信息if (ngx_add_inherited_sockets(&init_cycle) != NGX_OK) { return 1;}

 

內存池
nginx 是通過資源集中管理的方式管理資源的,即打開所有即將要用的資源,以備隨時取用,無論是文件還是內存

這樣做的好處是避免了每次創建、打開資源造成的性能消耗

因此,便有了內存池模塊,用來集中申請內存資源并進行內存資源的管理和分配

內存池結構:

// struct ngx_pool_data_t// 內存池數據塊結構 {{{typedef struct { u_char    *last;  // 當前內存分配的結束位置 u_char    *end;  // 內存池的結束位置 ngx_pool_t   *next;  // 下一內存池 ngx_uint_t   failed; // 內存分配失敗計數} ngx_pool_data_t; // }}}// struct ngx_pool_s// 內存池結構 {{{struct ngx_pool_s { ngx_pool_data_t  d;  // 內存池數據塊 size_t    max;  // 待分配內存大小 ngx_pool_t   *current; // 指向當前內存池起始位置 ngx_chain_t   *chain; ngx_pool_large_t  *large; // 指向大塊內存分配 ngx_pool_cleanup_t *cleanup; // 析構函數 ngx_log_t   *log;  // 內存分配相關的log}; // }}}

在這個函數中,使用了一個封裝好的函數 ngx_memalign,這個函數是對系統中按照數據對齊方式分配內存的函數的封裝,在不同的系統中實現方式不同,通過宏定義,實現了操作系統的適配,這是一個很漂亮的技巧

#if (NGX_HAVE_POSIX_MEMALIGN)// void * ngx_memalign(size_t alignment, size_t size, ngx_log_t *log)// 用數據對齊的方式進行內存分配 {{{void *ngx_memalign(size_t alignment, size_t size, ngx_log_t *log){ void *p; int err; // size 單位是 byte 而不是 bit err = posix_memalign(&p, alignment, size); if (err) {  ngx_log_error(NGX_LOG_EMERG, log, err,      "posix_memalign(%uz, %uz) failed", alignment, size);  p = NULL; } ngx_log_debug3(NGX_LOG_DEBUG_ALLOC, log, 0,     "posix_memalign: %p:%uz @%uz", p, size, alignment); return p;} // }}}#elif (NGX_HAVE_MEMALIGN)// void * ngx_memalign(size_t alignment, size_t size, ngx_log_t *log)// 用數據對齊的方式進行內存分配 {{{void *ngx_memalign(size_t alignment, size_t size, ngx_log_t *log)

所有有關內存分配的系統調用函數的封裝都定義在 ngx_alloc.c 文件中

這里用到了 posix_memalign 系統調用,使用這個系統調用分配出來的內存是默認按照第二個參數的大小對齊的,這樣在進行數據讀寫的時候,CPU可以周期地對整塊數據進行讀寫,很大程度的節省了CPU時間

這個系統調用所分配的內存也是存在于堆內存中的,可以使用 free 函數進行釋放,不過 malloc 分配的內存默認也是對齊的,它相對于 malloc 的優勢僅僅在于可以指定默認對齊大小。
函數完成了內存池的初步分配,執行后 pool 取值:

$23 = (ngx_pool_t *) 0x80fe9f0(gdb) p *init_cycle.pool$24 = { d = { last = 0x80fea18,  end = 0x80fedf0,  next = 0x0,  failed = 0 },  max = 984,  current = 0x80fe9f0,  chain = 0x0,  large = 0x0,  cleanup = 0x0,  log = 0x80e3020 <ngx_log>}

如下圖所示:

Nginx,內存池,初始化,Nginx配置,配置

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
全色精品综合影院| 91视频8mav| 久久免费国产精品1| 日本精品中文字幕| 久久精品国产久精国产思思| 欧美在线视频观看| 精品国产乱码久久久久久虫虫漫画| 欧美日韩爱爱视频| 久久久精品视频成人| 久久艳片www.17c.com| 国产成人一区二区三区电影| 国产精品中文久久久久久久| 亚洲国语精品自产拍在线观看| 日本亚洲欧美成人| 亚洲欧美国产一本综合首页| 国产亚洲精品91在线| 亚洲欧美第一页| 欧美电影《睫毛膏》| 亚洲国产精品一区二区三区| 国产精品色悠悠| 色噜噜狠狠狠综合曰曰曰88av| 国模视频一区二区三区| 欧美激情一级精品国产| 午夜精品www| www亚洲欧美| 国产精品综合久久久| 亚洲久久久久久久久久久| 午夜精品久久久久久久男人的天堂| 俺也去精品视频在线观看| 亚洲精品久久久久久下一站| 国产精品久久99久久| 亚洲成年人在线播放| 精品一区电影国产| 一区二区日韩精品| 日韩亚洲一区二区| 亚洲精品国产免费| 日韩免费在线免费观看| 成人免费福利在线| 亚洲国产精品va在线看黑人动漫| 日韩精品一区二区视频| 亚洲视频欧美视频| 国产成人97精品免费看片| 91精品国产91久久久久久最新| 国产精品久久久久影院日本| 92看片淫黄大片看国产片| 九九久久国产精品| 亚洲图片在线综合| 高清一区二区三区四区五区| 日韩电影第一页| 中文字幕精品www乱入免费视频| 在线日韩欧美视频| 欧美午夜性色大片在线观看| 成人写真视频福利网| www.久久撸.com| 日韩在线观看网址| 久热爱精品视频线路一| 国产丝袜高跟一区| 亚洲欧美制服中文字幕| 日韩一区二区三区在线播放| 欧美黄色www| 国产精品劲爆视频| 久久久久久亚洲精品不卡| 欧美性受xxx| 日韩电视剧免费观看网站| 欧美尤物巨大精品爽| 97国产精品人人爽人人做| 国产精品久久久久久久av电影| 日韩欧美在线网址| 青青草精品毛片| 尤物精品国产第一福利三区| 亚洲精品美女在线观看| 亚洲另类xxxx| 欧洲美女免费图片一区| 欧美成人性色生活仑片| 国产一区二区三区日韩欧美| 欧美性20hd另类| 亚洲最新视频在线| 国产一区二区三区在线| 伊人伊人伊人久久| 亚洲人a成www在线影院| 亚洲精品www久久久久久广东| 性色av一区二区三区在线观看| 久久夜色精品国产| 日韩在线观看免费高清完整版| 大桥未久av一区二区三区| 日韩小视频网址| 久久精品久久精品亚洲人| 色悠久久久久综合先锋影音下载| 国产经典一区二区| 久色乳综合思思在线视频| 91av视频在线| 亚洲欧美在线免费| 91精品国产91久久久久久最新| 国模私拍视频一区| 国产区精品视频| 亚洲免费影视第一页| 欧美高清电影在线看| 岛国av一区二区三区| 欧美香蕉大胸在线视频观看| 国产精品激情av在线播放| 青草热久免费精品视频| 国产91ⅴ在线精品免费观看| 久久精品亚洲94久久精品| 一本色道久久88综合亚洲精品ⅰ| 国产精品福利久久久| 日韩亚洲欧美中文在线| 亚洲第一福利在线观看| 国产成人高清激情视频在线观看| 91视频国产精品| 国产精品成人国产乱一区| 亚洲黄色有码视频| 精品福利视频导航| 91视频九色网站| 色偷偷av一区二区三区| 亚洲欧美日韩天堂一区二区| 国外成人在线播放| 亚洲男人天堂九九视频| 国产精品久久久久久久一区探花| 国产精品久久久久不卡| 日韩专区中文字幕| 欧美性猛交xxxx免费看漫画| 国产精品国产福利国产秒拍| 日韩日本欧美亚洲| 国产日韩精品在线播放| 亚洲欧洲日产国产网站| 国产精品精品久久久| 91人人爽人人爽人人精88v| 黑人巨大精品欧美一区二区免费| 欧美激情日韩图片| 久久精品国产69国产精品亚洲| 久久这里只有精品视频首页| 欧美黑人一级爽快片淫片高清| 中文字幕亚洲无线码a| 久久亚洲春色中文字幕| www日韩中文字幕在线看| 91久热免费在线视频| 国产精品美女主播| 91精品国产免费久久久久久| 最近2019中文字幕第三页视频| 亚洲欧美日韩一区二区在线| 81精品国产乱码久久久久久| 亚洲精品日韩丝袜精品| 欧美日韩在线免费| 日韩精品在线免费观看视频| 国外视频精品毛片| 美女撒尿一区二区三区| 欧美中文在线观看国产| 国产亚洲欧美另类中文| 欧美视频13p| 欧美wwwxxxx| 国产精品吹潮在线观看| 亚洲性夜色噜噜噜7777| 在线激情影院一区| 亚洲欧洲午夜一线一品| 北条麻妃久久精品| 亚洲天堂av图片| 国产精品一区二区久久精品| 日韩av网站在线| 精品视频在线导航| 欧美大片在线看免费观看| 精品日本高清在线播放| 国产精品国产三级国产aⅴ浪潮| 富二代精品短视频| 欧美激情精品久久久久久变态|