色偷偷精品伊人,欧洲久久精品,欧美综合婷婷骚逼,国产AV主播,国产最新探花在线,九色在线视频一区,伊人大交九 欧美,1769亚洲,黄色成人av

240 發(fā)簡信
IP屬地:江西
  • sort | uniq -c

    深入理解nginx

    學(xué)習(xí)記錄

  • 規(guī)則簡單總結(jié)就是優(yōu)先級(jí)從高到低依次為(序號(hào)越小優(yōu)先級(jí)越高):
    鏈接: https://zhuanlan.zhihu.com/p/130819099

    1. location = # 精準(zhǔn)匹配
    2. location ^~ # 帶參前綴匹配
    3. location ~ # 正則匹配(區(qū)分大小寫)
    4. location ~* # 正則匹配(不區(qū)分大小寫)
    5. location /a # 普通前綴匹配,優(yōu)先級(jí)低于帶參數(shù)前綴匹配。
    6. location / # 任何沒有匹配成功的,都會(huì)匹配這里處理

    負(fù)載均衡
    鏈接:
    1. Nginx學(xué)習(xí)---負(fù)載均衡的原理、分類、實(shí)現(xiàn)架構(gòu),以及使用場景, https://www.cnblogs.com/ftl1012/p/9570846.html
    2. Nginx四層負(fù)載均衡概述, https://zhuanlan.zhihu.com/p/380727659

    二層負(fù)載均衡(mac)
    三層負(fù)載均衡(ip)
    四層負(fù)載均衡(tcp)
    用 ip + port 接收請(qǐng)求,再轉(zhuǎn)發(fā)到對(duì)應(yīng)的機(jī)器
    七層負(fù)載均衡(http)
    根據(jù)虛擬的 url 或 ip ,主機(jī)名接收請(qǐng)求,再轉(zhuǎn)向相應(yīng)的處理服務(wù)器


    nginx怎么避免驚群?
    accept 鎖和 epoll 鎖: https://zhuanlan.zhihu.com/p/51251700
    accept
    1. 內(nèi)核 2.6 以上,自然修復(fù)
    2. 加鎖
    epoll
    加鎖 -> 支持原子操作的鎖,如 mmap,以及不支持原子操作的文件鎖
    控制某個(gè)進(jìn)程的連接數(shù)量
    ngx_accept_disabled = ngx_cycle->connection_n / 8 - ngx_cycle->free_connection_n;

    邊緣觸發(fā)還是水平觸發(fā):
    鏈接: https://blog.csdn.net/mrpre/article/details/80595540
    ngx_add_conn 使用邊緣觸發(fā)(ET)
    ngx_add_event 默認(rèn)使用水平觸發(fā)(LT)
    ngx_handle_read_event 監(jiān)聽使用的是邊緣觸發(fā)

    深入理解nginx

    學(xué)習(xí)記錄

  • ngx_conf_handler 處理單個(gè)配置:
    比對(duì)所有模塊的 commands ,取第一條匹配的 command (module_type 類型也要一致), cmd->set()
    每個(gè)配置都有一個(gè)偏移,這個(gè) cmd->conf ,用來決定是要存在哪一級(jí)別的配置里面
    ```c
    #define NGX_HTTP_MAIN_CONF_OFFSET offsetof(ngx_http_conf_ctx_t, main_conf)
    #define NGX_HTTP_SRV_CONF_OFFSET offsetof(ngx_http_conf_ctx_t, srv_conf)
    #define NGX_HTTP_LOC_CONF_OFFSET offsetof(ngx_http_conf_ctx_t, loc_conf)
    ```
    解析 http {} -> ngx_http_block()
    創(chuàng)建 ngx_http_module 模塊的 http->ctx:
    提取所有的 NGX_HTTP_MODULE 模塊,并創(chuàng)建 ctx->main_conf, ctx->srv_conf, ctx->loc_conf
    再次提取,并且每個(gè)模塊都再次調(diào)用對(duì)應(yīng)的 create 函數(shù) ctx->main_conf[mi] = module->create_main_conf(cf)
    => 再執(zhí)行每個(gè)模塊的 preconfiguration
    => 再執(zhí)行每個(gè)模塊的 init_main_conf
    再執(zhí)行每個(gè)模塊 main 配置和 server 級(jí)別的配置合并 ngx_http_merge_servers
    module->merge_srv_conf
    module->merge_loc_conf
    再執(zhí)行每個(gè)模塊所有的 locations ngx_http_merge_locations -> 對(duì)每個(gè)server的location進(jìn)行排序和分類處理
    對(duì)每個(gè) server 進(jìn)行 locations 排序和優(yōu)化
    按匹配字符串進(jìn)行排序 -> ngx_http_init_locations
    快速地構(gòu)建靜態(tài)的三叉查找樹 -> ngx_http_init_static_location_trees

    初始化階段鉤子(引擎) phases -> ngx_http_init_phases
    預(yù)設(shè)的一些頭部先計(jì)算 hash 值 -> ngx_http_init_headers_in_hash
    => 再執(zhí)行每個(gè)模塊 的 postconfiguration
    初始化變量: ngx_http_variables_init_vars
    設(shè)置每個(gè)階段的 checker() 函數(shù): ngx_http_init_phase_handlers
    給每個(gè)階段添加 handler 函數(shù), checker() 函數(shù)主要是對(duì)于 handler 返回結(jié)果之后的校驗(yàn)以及是否走下個(gè)階段做判斷
    優(yōu)化端口信息 -> ngx_http_optimize_servers
    通配符等處理

    深入理解nginx

    學(xué)習(xí)記錄

  • main 函數(shù):
    解析參數(shù)
    => 平滑升級(jí): ngx_add_inherited_sockets
    對(duì)模塊進(jìn)行編號(hào)和統(tǒng)計(jì)模塊數(shù)量
    讀配置,并初始化 cycle : ngx_init_cycle
    守護(hù)進(jìn)程模式判斷
    創(chuàng)建 pid 文件
    => 單進(jìn)程模式: ngx_single_process_cycle
    ngx_set_environment
    init_process
    ngx_process_events_and_timers
    => 考慮驚群效應(yīng), https://cloud.tencent.com/developer/article/1341088
    => 多進(jìn)程模式: ngx_master_process_cycle
    初始化信息相關(guān)信息
    主進(jìn)程名: master_process
    子進(jìn)程名: ngx_argc
    啟動(dòng) worker 進(jìn)程: ngx_start_worker_processes
    啟動(dòng)cache manager, cache loader進(jìn)程: ngx_start_cache_manager_processes
    => 平滑升級(jí)
    進(jìn)行熱代碼替換,這里是調(diào)用execve來執(zhí)行新的代碼: ngx_exec_new_binary
    設(shè)置環(huán)境變量
    把監(jiān)聽的 fd 寫到環(huán)境變量中
    修改舊的 pid 文件
    => ngx_execute()
    ngx_spawn_process()
    socketpair 父進(jìn)程和子進(jìn)程通信管道,ngx_processes[s].channel
    fork()
    所有子進(jìn)程不再接受處理新的連接,實(shí)際相當(dāng)于對(duì)所有的予進(jìn)程發(fā)送QUIT信號(hào)量 => ngx_signal_worker_processes

    ngx_init_cycle 核心步驟:
    先初始化 core 核心模塊(框架只關(guān)心核心模塊): NGX_CORE_MODULE -> module->create_conf
    創(chuàng)建一個(gè) ngx_conf_t 結(jié)構(gòu),要開始解析 conf->ctx
    解析命令行參數(shù)信息到內(nèi)存結(jié)構(gòu)中: ngx_conf_param -> ngx_conf_parse(NULL)
    ==> 解析配置: ngx_conf_parse
    解析完所有配置, core 核心模塊進(jìn)行綜合性處理, module->init_conf
    創(chuàng)建 pid 文件: ngx_create_pidfile ,并加鎖: ngx_test_lockfile
    創(chuàng)建相關(guān)的目錄,日志,文件,共享內(nèi)存
    監(jiān)聽 socket : ngx_open_listening_sockets
    ==> 調(diào)用所有 NGX_CORE_MODULE 模塊的 init_conf
    創(chuàng)建主進(jìn)程名: -> ngx_create_pidfile
    創(chuàng)建所有文件路徑的文件夾: ngx_create_paths
    ==> 這個(gè)時(shí)間更換掉 log -> cycle->log = &cycle->new_log
    初始化共享內(nèi)存
    設(shè)置監(jiān)聽的 ip 和端口信息,并啟動(dòng)監(jiān)聽: ngx_open_listening_sockets
    ==> 調(diào)用所有模塊的 init_module
    一些清理操作,如清理掉舊進(jìn)程沒有用到的文件等

    深入理解nginx

    學(xué)習(xí)記錄

  • 優(yōu)點(diǎn):
    優(yōu)秀的模塊設(shè)計(jì)
    事件驅(qū)動(dòng)架構(gòu)
    請(qǐng)求的多階段異步處理
    master-worker 的管理設(shè)計(jì)
    平臺(tái)無關(guān)的代碼實(shí)現(xiàn)
    內(nèi)存池的設(shè)計(jì)
    使用統(tǒng)一管道過濾器模式的 HTTP 過濾模塊
    缺點(diǎn):
    1. 動(dòng)態(tài)處理差
    2. rewrite 弱
    3. 啟用狀態(tài)下,調(diào)試日志不好打??; HOOK 多,調(diào)試不方便; 多進(jìn)程同時(shí)監(jiān)聽一個(gè)端口,不能控制是哪個(gè)進(jìn)程來 accept

    平滑升級(jí):
    新的 master 進(jìn)程
    讀環(huán)境變量中的 socket : ngx_add_inherited_sockets
    把舊的 socket 還原值,保存到結(jié)構(gòu)體中(這里還沒有開始監(jiān)聽): ngx_set_inherited_sockets

    深入理解nginx

    學(xué)習(xí)記錄

  • MEAELZILYQVAHULL

    Python離線安裝第三方庫

    參考鏈接: pip的基本使用和離線安裝Python第三方庫 https://blog.csdn.net/Hanniel/article/details/81086459[ht...

  • VS code unresolved import "xxx"(轉(zhuǎn))

    僅以本人遇到的情況為例,在VS code 中編寫 python 的程序時(shí),會(huì)遇“unresolved import XXX” 的情況,經(jīng)查閱資料,是VS code 中自帶的 ...

  • Vscode配置linux下的C開發(fā)環(huán)境

    安裝基礎(chǔ)插件 c/c++, c/c++ Extension Pack, find all reference 安裝gun globals 參考鏈接:讓VSCode支持 "Fi...

  • Python離線安裝第三方庫

    參考鏈接: pip的基本使用和離線安裝Python第三方庫 https://blog.csdn.net/Hanniel/article/details/81086459[ht...

  • Python2離線安裝python2,pip

    參考鏈接: Linux安裝python2.7、pip和setuptools: https://www.cnblogs.com/xiaowenshu/p/10239834.ht...

  • sftp同步代碼到遠(yuǎn)程服務(wù)器

    參考鏈接:vscode+sftp開發(fā)模式環(huán)境的同步,https://segmentfault.com/a/1190000011844958 安裝sftp插件 打開一個(gè)目錄, ...

  • 120
    Vscode配置GDB調(diào)試Nginx環(huán)境

    配合remote-ssh,可以很好地使用gdb直接調(diào)試遠(yuǎn)程服務(wù)器上的程序 比如我們此次使用GDB來直接調(diào)試nginx 配置gcc和gdb的路徑 配置此次項(xiàng)目的一些特殊配置 配...

  • 120
    Vscode離線安裝插件

    官網(wǎng)下載鏈接: https://marketplace.visualstudio.com/ 搜索之后下載: 下載插件 安裝插件 使用命令行安裝: 圖形化界面安裝:

  • Vscode配置Remote遠(yuǎn)程開發(fā)環(huán)境

    [TOC] 1. Vscode配置Remote遠(yuǎn)程開發(fā)環(huán)境 分為服務(wù)器可以連網(wǎng)和不能連網(wǎng)的兩種情況。首先服務(wù)器有網(wǎng)插件基本都可以裝,就很方便了。這里重點(diǎn)說一上斷網(wǎng)的情況下要如...

  • 120
    TIME_WAIT

    為什么需要三次握手 1、保證全雙工通信2、防止失效的連接請(qǐng)求到服務(wù)器,讓服務(wù)器錯(cuò)誤地打開連接,浪費(fèi)資源2原因: 謝希仁版《計(jì)算機(jī)網(wǎng)絡(luò)》中的例子是這樣的,“已失效的連接請(qǐng)求報(bào)文...

  • 120
    C/C++程序內(nèi)存分配

    程序的內(nèi)存分配 轉(zhuǎn)載鏈接:https://blog.csdn.net/LG1259156776/article/details/52627565 https://blog.c...

淳化县| 堆龙德庆县| 棋牌| 永宁县| 温宿县| 弋阳县| 洞头县| 临安市| 垫江县| 桐庐县| 犍为县| 光泽县| 奉化市| 兴业县| 会宁县| 子长县| 汕尾市| 昭觉县| 喀喇沁旗| 介休市| 东乌| 安徽省| 九江市| 东方市| 商河县| 息烽县| 高邮市| 四子王旗| 卓资县| 六安市| 林芝县| 定襄县| 桐城市| 凤冈县| 襄汾县| 逊克县| 邹城市| 海城市| 微博| 乐业县| 丰台区|