作者回复: 看不到cache manager进程是因为没有配置相关指令,打开nginx的cache功能,第4部分介绍反向代理时会介绍缓存功能的指令。而cache loader进程仅在cache打开时才会有,而且存在时间非常短,它是用于将之前nginx产生的cache信息元数据读入内存中的,读取完成后就会退出。
作者回复: 参见第121,122课
作者回复: 我猜测你那个dll库的API方法是阻塞的,会导致大量的进程间切换,用多线程可以缓解。有两个办法验证:1、第5部分有一节课是介绍googleperftool的,你可以使用它生成一张调用耗时图。2、第5部分还有一节课介绍观察Nginx的进程间切换,例如pidstat,观察是不是有大量的主动进程切换。Nginx在繁忙的时候不应该有主动进程切换的。
作者回复: master进程不消耗cpu。进程间切换一直存在,因为操作系统上除nginx外还有很多进程。
作者回复: 共享缓存?没明白。worker进程是通过共享内存来通讯的,比如upstream中的zone,或者limit_req、limit_conn中的zone等。操作系统提供了共享内存机制,你可以看下mmap这个函数。