美文网首页中间件
关于Nginx的认知

关于Nginx的认知

作者: youngxs | 来源:发表于2019-11-27 14:56 被阅读0次

    作为一位PHP应该很清楚的知道,PHP的搭档:Nginx,一直以来对于Nginx的了解仅仅都是呈现在它能够有效的解决高并发的问题,但是对于他如何去实现,一直都没有怎么去关注。直到请教了一些大牛然后加上百度了一些资料才有了点大致的了解。

首先需要了解到的是Nginx相对于PHP来说,他是专门用来接收用户通过浏览器发送过来的请求,如果这样说不理解的话,就打个比方,如果,PHP+Nginx+mysql+一系列需要用到的东西是一个公司的话,那Nginx就是一个前台,专门用来接待上门的客户的。这样是不是可以理解了呢?

但是从实际意义上来说,仅仅把它比作一个前台似乎有点贬低了他的能力。接下来就大致说一下Nginx的它是怎么工作的。

首先用户通过浏览器访问服务器,Nginx接收到发过来的请求,进行的三次握手,然后沟通成功。由于Nginx他一直在后台开着,所以他拥有一个master主进程和多个woker进程(也被叫做子进程),至于worker进程的数量,就需要看nginx.conf的配置了

woker进程数

当然这个进程数也不是随意配置,是需要根据你服务器的配置来设定的,如果你的服务器是双核4线程的,那一般就设置为4。至于为什么需要设置为4,我个人认为,服务器是双核4线程,workr_process设置为4,那当出现高并发的情况下,4个woker进程能分配到服务器的4个线程中,这样就能充分的利用服务器的资源,就好比一台服务器是一条马路,然后这条马路合理的分配成4条道路,然后呢,woker进程就好比是车一样,当早晚高峰的时候,4条道就会有4个通道用来有效的解决早晚高峰的问题,如果你设置为3,那就相当于车辆只能在3条道上使用,还有一条道是空着的,这样对于这条路的利用率就只有3/4,没有完全利用,当然这只是我个人的理解,如果哪个大牛觉得我说的有问题,真心希望能留个言帮忙好好解释一下。

Nginx启动以后的进程

针对于Nginx的master进程他的作用:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。所以他是不负责业务的,说白了就是一个纯粹的前台。

着重需要了解的就是woker进程,nginx启动的时候,会开启一个master进程,然后通过socket() 来创建一个 sock 文件描述符用来监听,接着就会fock出woker进程,每个woker进程都是独立的,就好比一个公司的每个部门一样。

当一个用户请求过来的时候,主进程就会把这个请求扔给woker进程,然后呢,会出现woker进程开始争抢这个请求,这种现象官方话来说就是:惊群现象,针对于这个现象,Nginx有了有效的解决方式,Nginx 提供了一个 accept_mutex 这个东西,这是一个加在accept上的一把共享锁。即每个 worker 进程在执行 accept 之前都需要先获取锁,获取不到就放弃执行 accept()。有了这把锁之后,同一时刻,就只会有一个进程去 accpet(),这样就不会有惊群问题了。accept_mutex 是一个可控选项,我们可以显示地关掉,默认是打开的。

当某个woker进程抢到了这个请求以后接下去就开始连着php-fpm 和php 开始搞事情了。具体怎么搞,下章再说

相关文章

  • 关于Nginx的认知

    作为一位PHP应该很清楚的知道,PHP的搭档:Nginx,一直以来对于Nginx的了解仅仅都是呈现在它能够有效...

  • 贵安项目nginx配置

    关于nginx的使用以及为什么使用【Nginx】什么是Nginx?为什么使用Nginx?nginx 之 proxy...

  • 配置nginx和tomcat负载均衡/反向代理

    1. 编辑nginx/conf/nginx.conf 关于nginx的安装,请查看【Linux编译安装Nginx】...

  • nginx部署/代理/跨域

    关于nginx,咱们先了解nginx在开发过程中的主要作用 nginx解决跨域 nginx负载均衡 一、nginx...

  • MAC 下 nginx 80端口解决方案

    nginx 安装 通过brew $:brew install nginx launchd 关于launchd的描述...

  • Nginx安装与配置

    一、Nginx官网 关于nginx简介的文章很多,就不赘述了。官网 http://nginx.org/ 二、cen...

  • 高并发下的 Nginx 优化

    我已经谈过一些关于Nginx的常见问题; 其中有一些是关于如何优化Nginx. 很多Nginx新用户是从Apach...

  • 元认知

    元认知是“关于认知的认知,关于思考的思考”,那么“元教育”,就是“关于教育的教育,关于学习的学习”;元认知用来思考...

  • 关于认知的认知

    【认知的差别让整个台湾和日本停留在上个世纪】 认知思维具有超越性,某种维度看,认知是思维之王。认知与技能的...

  • NGINX上的限流(译)

    本文是对Rate Limiting with NGINX and NGINX Plus的主要内容(去掉了关于NGI...

网友评论

    本文标题:关于Nginx的认知

    本文链接:https://www.haomeiwen.com/subject/mtepwctx.html