nginx学习(二)--nginx整体结构、进程模型概览

274 阅读2分钟

一、nginx整体结构

1.1 master进程和worker进程概览
    手动启动nginx cd /usr/local/nginx ./nginx
    查看nginx 启动情况:ps -ef | grep nginx
    第一列:UID,进程所属的用户id
    第二列:进程ID(PID),用来唯一的标识一个进程
    第三列:父进程ID(PPID).fork(),worker进程是被master进程通过fork()创建出来的-worker进程是master的子进程
 
1.2 nginx进程模型
    1个master进程,1到多个worker进程,这种工作机制来对外服务的。这种工作机制保证了nginx能够稳定、灵活的运行。
    

图片.png

    a.)master进程责任:监控进程,不处理具体业务,专门用来管理和监控worker进程;master角色是监工
    b.)worker进程责任:用来干主要的活的(和用户交互的)
    c.)master 和 worker 通讯:可以用信号,共享内存等技术
    d.)稳定性、灵活性体现之一:worker一旦挂掉,那么master进程则立即fork()一个新的worker进程投入到工作中去。
1.3 调整worker进程数量
    worker进程几个合适?公认的做法:让每个worker进程运行在单独的内核上,最大限度的减少cpu进程切换成本,提高系统运行效率。即:计算机内核数量与worker进程数量相等
    8个processors
    Linux 下查看 processors grep -c processor /proc/cpuinfo
    如果小于物理processors个数 则Linux配置为 与物理processors个数一致
    然后配置worker 配置为processor个数
    /usr/local/nginx/conf/nginx.conf
    修改worker_processes 8; 
    保存 退出
    然后 查看nginx 是否启动 ps -ef | grep nginx
    没启动的话 启动sudo ./nginx
    

图片.png

二、nginx模型细说

稳定性 灵活
2.1 修改配置文件  使之立即生效 sudo ./nginx -s reload
2.2 nginx 热升级
    ./nginx -v 查看版本 升级新版本时 服务不停止 
    nginx 热回轨
    新版本发现不稳定时,还可回退到老版本
2.3 nginx 关闭
    粗暴 sudo kill 
    平滑 ./nginx -s quit 优雅退出 不接受新链接,完成当前链接
         ./nginx -s stop 直接退出 
2.4 nginx 属于多进程
    多线程弊端 共享内存 如果某个线程报错一定会影响到其他线程,很有可能导致服务器崩溃
    nginx 可以把进程与processe绑定在一起,可以提高运行效率