nginx相关知识
一:nginx简介
    nginx(2002年开发,2004年10才出现第一个版本0.1.0):web服务器,市场份额,排在第二位,Apache(1995)第一位;
    web服务器,反向代理,负载均衡,邮件代理;运行时需要的系统资源比较少,所以经常被称呼为轻量级服务器;
    是一个俄罗斯人(Igor Sysoev),C语言(不是c++)开发的,并且开源了;
    nginx号称并发处理百万级别的TCP连接,非常稳定,热部署(运行的时候能升级),高度模块化设计,自由许可证。
    很多人开发自己的模块来增强nginx,第三方业务模块(c++开发); OpenResty;
    linux epoll技术;   windows IOCP
二:为什么选择nginx
    单机10万并发,而且同时能够保持高效的服务,epoll这种高并发技术好处就是:高并发只是占用更多内存就能 做到;
    内存池,进程池,线程池,事件驱动等等;
    学习研究大师级的人写的代码,是一个程序开发人员能够急速进步的最佳途径;
三:安装nginx,搭建web服务器
    (3.1)安装前提
    a)epoll,linux 内核版本为2.6或者以上;
    b)gcc编译器,g++编译器
    c)pcre库:函数库;支持解析正则表达式;
    d)zlib库:压缩解压缩功能
    e)openssl库:ssl功能相关库,用于网站加密通讯
一:nginx的整体结构
    (1.1)master进程和worker进程概览(父子关系)
    启动nginx,看到了一个master进程,一个worker进程
    ps -ef命令
    第一列:UID,进程所属的用户id
    第二列:进程ID(PID),用来唯一的标识一个进程
    第三列:父进程ID(PPID)。 fork(),worker进程是被master进程通过fork()创建出来的-worker进程是master进程的子进程,master是父进程
    (1.2)nginx进程模型
    1个master进程,1到多个worker进程 这种工作机制来对外服务的;这种工作机制保证了 nginx能够稳定、灵活的运行;
    a)master进程责任:监控进程,不处理具体业务,专门用来管理和监控worker进程;master,角色是监工,比如清闲;
    b)worker进程:用来干主要的活的,(和用户交互);
    c)master进程和worker进程之间要通讯,可以用 信号 ,也可以用 共享内存 ;
    d)稳定性,灵活性,体现之一:worker进程 一旦挂掉,那么master进程会立即fork()一个新的worker进程投入工作中去;
(1.3)调整worker进程数量
    worker进程几个合适呢?公认的做法: 多核计算机,就让每个worker运行在一个单独的内核上,最大限度减少CPU进程切换成本,提高系统运行效率;
    物理机:4核(4个processors);
    工作站:2个物理cpu ,蓝色的一个cpu,红色的一个cpu
    每个物理cpu里边内核数量,是4个;core1 --core4
    每个core里边有两个逻辑处理器(超线程技术/siblings)
    16个processors(最细小的单位,也就是平时大家说的处理器个数)
二:nginx进程模型细说
    稳定  ,灵活
    (2.1)nginx重载配置文件
    (2.2)nginx热升级,热回滚
    (2.3)nginx的关闭
    (2.4)总结
    多进程,多线程:
    多线程模型的弊端:共享内存,如果某个线程报错一定会影响到其他线程,最终会导致整个服务器程序崩溃;

京公网安备 11010502036488号