zoukankan      html  css  js  c++  java
  • NGINX----源码阅读---worker进程都干了啥

     1 static void
     2 ngx_worker_process_cycle(ngx_cycle_t *cycle, void *data)
     3 {
     4     ngx_int_t worker = (intptr_t) data;
     5 
     6     ngx_process = NGX_PROCESS_WORKER;
     7     ngx_worker = worker;
     8     //首先初始化worker
     9     ngx_worker_process_init(cycle, worker);
    10     //修改worker进程的名字
    11     ngx_setproctitle("worker process");
    12 
    13     for ( ;; ) {
    14 
    15         if (ngx_exiting) {
    16             ngx_event_cancel_timers();
    17 
    18             if (ngx_event_timer_rbtree.root == ngx_event_timer_rbtree.sentinel)
    19             {
    20                 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
    21 
    22                 ngx_worker_process_exit(cycle);
    23             }
    24         }
    25 
    26         ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "worker cycle");
    27         //处理时间和定时器
    28         ngx_process_events_and_timers(cycle);
    29 
    30         if (ngx_terminate) {
    31             ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
    32 
    33             ngx_worker_process_exit(cycle);
    34         }
    35 
    36         if (ngx_quit) {
    37             ngx_quit = 0;
    38             ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0,
    39                           "gracefully shutting down");
    40             ngx_setproctitle("worker process is shutting down");
    41 
    42             if (!ngx_exiting) {
    43                 ngx_exiting = 1;
    44                 ngx_close_listening_sockets(cycle);
    45                 ngx_close_idle_connections(cycle);
    46             }
    47         }
    48 
    49         if (ngx_reopen) {
    50             ngx_reopen = 0;
    51             ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "reopening logs");
    52             ngx_reopen_files(cycle, -1);
    53         }
    54     }
    55 }

    worker的执行主要是初始化worker进程

    修改worker进程名称

    通过tag判断是否退出worker进程

    最重要的是:进行时间和定时器的处理。

  • 相关阅读:
    Twitter视频下载方式
    维基百科镜像处理
    Python sll
    youyube-dl
    python 进程池pool
    python常用正则表达式
    Struts2笔记3--OGNL
    Struts2笔记2
    Struts2笔记1
    Hibernate笔记7--JPA CRUD
  • 原文地址:https://www.cnblogs.com/wangtengxiang/p/6409887.html
Copyright © 2011-2022 走看看