NGINX 时间管理机制

NGINX通过缓存时间来提高处理速度,避免频繁的系统调用。为了保持时间准确性,它采用定时更新机制,并在无超时事件时采取强制更新策略,如使用SIGALRM中断epoll_wait,防止时间误差过大。这种设计允许根据场景选择配置,确保在不同负载下都能有效管理时间。
摘要由CSDN通过智能技术生成

         nginx 自己维护了一个时间,用户向用户提供时间,它使用缓存时间的机制,这样避免了频繁的系统调用(gettimeofday),加快处理速度。

但缓存时间,又必须要及时更新时间,否则时间将不准确。所以, NGINX配套了一系列的措施,减少误差。

void
ngx_process_events_and_timers(ngx_cycle_t *cycle)
{
    ngx_uint_t  flags;
    ngx_msec_t  timer, delta;

    if (ngx_timer_resolution) {
        timer = NGX_TIMER_INFINITE;   //-1
        flags = 0;

    } else {
        timer = ngx_event_find_timer();
        flags = NGX_UPDATE_TIME;
    }

    (void) ngx_process_events(cycle, timer, flags);
}
先暂时不去理会ngx_timer_resolution,只关注else部分,timer = ngx_event_find_timer(),

该函数返回距离第一个超时事件还有多久时间,可能为-1,即目前没有注册超时事件。

而同时,flags 标记为NGX_UPDATE_TIME,即更新缓存时间。


ngx_process_events对应于具体的事件处理函数,本文以epoll为例,因而对应于如下代码:

static n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值