一、框架介绍
nginx 是一款出色的代理服务器,支持高并非,高度模块化,广泛用于CDN、统一接入网关、邮件服务器、后端代理服务器等等。
二、进程模型
nginx 启动时,会有一个master进程和多个worker进程,master和worker进程之间通过管道进行通信,master进程主要是监控worker进程。为了减少cpu切换影响cpu效率,一个worker进程绑定到一个cpu上面。
接下来,我们谈下nginx的优化重启,执行:nginx -s reload时,整体流程:master进程收到重启信号后,会重载配置文件,然后启动worker进程,老的worker进程如果有任务在执行并不会立即退出,直到任务处理完才会完全退出。
三、事件模型
这里主要谈的是高并发,为什么nginx能够处理高并发? 假设一个线程处理一个请求,那么上万的并发就需要上万的线程,这明显不合适,线程非常消耗cpu,这样cpu吃不消。nginx非常巧妙的应用了IO模型:epoll。nginx启动后:一个worker进程启动一个线程,处理事件时,采用异步非阻塞。比如nginx的worker1根某个client 建立连接后,会定时的查询是否数据需要处理,如果没有就不会一直占用资源,这里后续放个单独章节来分析代码。