cache加载进程会在一段时间后消失,这是因为:
cache加载进程的功能是在nginx正常启动(60秒)后将磁盘中上次缓存的对象加载到内存中。
ngx_spawn_process(cycle, ngx_cache_manager_process_cycle,
&ngx_cache_loader_ctx, "cache loader process",
respawn ? NGX_PROCESS_JUST_SPAWN : NGX_PROCESS_NORESPAWN);
static ngx_cache_manager_ctx_t ngx_cache_loader_ctx = {
ngx_cache_loader_process_handler, "cache loader process", 60000
};
可见这里的回调函数为ngx_cache_loader_process_handler()
事件对象的超时时间为60000毫秒,
static void
ngx_cache_loader_process_handler(ngx_event_t *ev)
{
ngx_uint_t i;
ngx_path_t **path;
ngx_cycle_t *cycle;
cycle = (ngx_cycle_t *) ngx_cycle;
path = cycle->paths.elts;
for (i = 0; i < cycle->paths.nelts; i++) {
if (ngx_terminate || ngx_quit) {
break;
}
if (path[i]->loader) {
path[i]->loader(path[i]->data);
ngx_time_update();
}
}
exit(0);
}
这里的loader函数指 ngx_http_file_cache_loader函数。
这个函数给磁盘缓存管理对象对应路径下的已有缓存文件建立相应的红黑树,
从而让nginx可以继续使用上次缓存的文件。
本文详细解析了Nginx中cache加载进程的工作原理及其生命周期。该进程负责在Nginx启动后将磁盘上的缓存文件加载到内存中,通过红黑树结构进行组织,以便后续请求可以直接使用这些缓存文件。文章还介绍了实现这一功能的具体代码逻辑。

1561

被折叠的 条评论
为什么被折叠?



