linux系统关于nginx服务

nginx服务

    • nginx服务
      • nginx特点
      • IO多路复用
        • I/O multiplexing【多并发】
        • epoll接收请求的过程
        • 异步,非阻塞
      • nginx 的内部技术架构

nginx服务

nginx特点

Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。其特点是占有内存少,并发能力强Nginx是一个高性能的Web和反向代理服务器, 它具有有很多非常优越的特性:1.单机环境下参考服务器配置。并发连接数在7000-8000左右。集群模式20000+2.作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使Nginx尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了epoll and kqueue作为开发模型.3.作为负载均衡服务器:Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx用C编写, 不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。4.作为邮件代理服务器: Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。5.Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下进行软件版本的升级。

IO多路复用

I/O multiplexing【多并发】
第一种方法就是最传统的多进程并发模型,每进来一个新的I/O流会分配一个新的进程管理。
第二种方法就是I/O多路复用,单个线程,通过记录跟踪每个I/O流(sock)的状态,来同时管理多个I/O流 。I/O multiplexing 这里面的 multiplexing 指的其实是在单个线程通过记录跟踪每一个Sock(I/O流)的状态来同时管理多个I/O流。发明它的原因,是尽量多的提高服务器的吞吐能力。在同一个线程里面, 通过拨开关的方式,来同时传输多个I/O流
epoll接收请求的过程
epoll会把连接请求都监视起来,然后像拨开关一样,谁有数据就拨向谁,然后调用相应的代码处理。select, poll, epoll都是I/O多路复用的具体的实现select
select会修改传入的参数数组,这个对于一个需要调用很多次的函数,是非常不友好的。
select如果任何一个sock(I/O stream)出现了数据,select仅仅会返回,但是并不会告诉你是那个sock上有数据
select只能监视1024个链接
select不是线程安全的poll
poll去掉了1024个链接的限制
poll从设计上来说,不再修改传入数组
poll仍然不是线程安全的,只能在一个线程里面处理一组I/O流。epoll
epoll可以说是I/O 多路复用最新的一个实现,epoll 修复了poll 和select绝大部分问题, 比如:
epoll线程是安全的。 
epoll不仅告诉你sock组里面数据,还会告诉具体哪个sock有数据
异步,非阻塞
每进来一个request,会有一个worker进程去处理。处理到可能发生阻塞的地方,比如向上游(后端)服务器转发request,并等待请求返回。这个处理的worker不会这么一直等着,发送完请求后,注册一个事件,于是他就休息去了。这就是异步。此时,如果再有request 进来,他再按这种方式处理。这就是非阻塞和IO多路复用。而一旦上游服务器返回了,就会触发这个事件,worker才会来接手,这个request才会接着往下走。这就是异步回调。

nginx 的内部技术架构

Nginx服务器,以其处理网络请求的高并发、高性能及高效率,被广泛用于反向代理和负载均衡。
1)nginx启动时,会生成两种类型的进程,一个是主进程(Master),一个(windows版本的目前只有一个)或多个工作进程(Worker)。主进程并不处理网络请求,主要负责调度工作进程2)服务器实际处理网络请求及响应的是工作进程(worker),在lunix系统上,nginx可以配置多个worker,而每个worker进程都可以同时处理数以千计的网络请求3)模块化设计。nginx的worker,包括核心和功能性模块,核心模块负责维持一个运行循环(run-loop),执行网络请求处理的不同阶段的模块功能,如网络读写、存储读写、内容传输、外出过滤,以及将请求发往上游服务器等。而其代码的模块化设计,也使得我们可以根据需要对功能模块进行适当的选择和修改,编译成具有特定功能的服务器4)事件驱动、异步及非阻塞,可以说是nginx得以获得高并发、高性能的关键因素,同时也得益于对Linux、Solaris及类BSD等操作系统内核中事件通知及I/O性能增强功能的采用,如kqueue、epoll及event ports5)代理(proxy)设计,可以说是nginx深入骨髓的设计,无论是对于HTTP,还是对于FastCGI、memcache、Redis等的网络请求或响应,本质上都采用了代理机制。所以,nginx天生就是高性能的代理服务器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/611077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

金和OA C6 upload_json 任意文件上传漏洞

产品介绍 金和网络是专业信息化服务商,为城市监管部门提供了互联网监管解决方案,为企事业单位提供组织协同OA系统开发平台,电子政务一体化平台,智慧电商平台等服务。 漏洞概述 金和 OA C6 upload_json接口处存在任意文件上传漏洞,攻击者可以通过构造特殊请求包上…

LTESniffer:一款功能强大的LTE上下行链路安全监控工具

关于LTESniffer LTESniffer是一款功能强大的LTE上下行链路安全监控工具,该工具是一款针对LTE的安全开源工具。 该工具首先可以解码物理下行控制信道(PDCCH)并获取所有活动用户的下行链路控制信息(DCI)和无线网络临时…

三分钟教你学会设置PICO不自动休眠

三分钟教你学会设置PICO不自动休眠 大家经常会有这种困扰吧,“诶,我去倒杯水,怎么屏幕就黑了”或者“啊这个活动怎么要在线看这么久,好想去玩手机”之类的。会出现这种问题是因为PICO将自动休眠的时间设置得非常短,大…

Flink-CEP 实战教程

文章目录 1. 基本概念1.1 CEP 是什么1.2 模式(Pattern)1.3 应用场景 2. 快速上手2.1 引入依赖2.2 入门实例 3. 模式API(Pattern API)3.1 个体模式3.1.1 基本形式3.1.2 量词(Quantifiers )3.1.3 条件&#x…

GBASE南大通用分析型MPP数据库GBase8a的安全特性(2)

GBase南大通用自主研发的 GBase 8a MPP Cluster 产品(简称GBase8a)是大数据时代成熟的分析型MPP数据库,具有多样化的平台选择、与时俱进的逻辑架构、海量数据高效存储、海量数据高速加载、海量数据高性能分析、弹性服务器资源伸缩、完善的系统资源管理、…

Ubuntu18.04 Qt 实现MQTT

什么是MQTT? 作用是什么(适用场景)? 与其他通讯协议相比,优缺点在那里? 一.实现 MQTT 服务器 使用 EMQ X(开源且可视化管理) 下载 EMQX 下载的是 emqx-5.0.26-ubuntu18.04-…

AI Agent落地先行者实在智能:2023人工智能领军者、百强、TOP30揭榜

实在智能连登三榜! 【2023年十佳人工智能行业领军人物】 【2023年度人工智能领域创新企业】 【2023年度最具投资价值企业】 喜大普奔!近期,国内科技行业颇具含金量的三张榜单接连发布,实在智能皆榜上有名,“2023「…

网络编程套接字(Socket)

文章目录 1 重点知识2 预备知识2.1 理解源IP地址和目的IP地址2.2 认识端口号2.3 理解 "端口号" 和 "进程ID"2.4 理解源端口号和目的端口号2.5 认识TCP协议2.6 认识UDP协议2.7 网络字节序 3 socket编程接口3.1 socket 常见API3.2 sockaddr结构 4 简单的UDP网…

RT-Thread基于AT32单片机的485应用开发(三)Modbus从机

RT-Thread中已经有不少Modbus相关在线软件包,但总体应用起来还是相对复杂,所以在RT-Thread基于AT32单片机的485应用开发(二)的基础上实现了一个极简Modbus从机,支持Modbus功能码01,02,03&#x…

Android 车联网——其他Service介绍(十七)

除了前面介绍的 Service 和 Manager 之外,CarService 中还提供了很多其他 Service 和 Manager。 1、CarInputService CarInputService 是一个安卓汽车平台中的服务,它负责处理与车辆输入设备相关的操作,例如处理车辆上的按钮、方向盘控制、触摸屏输入等。该服务允许…

常用工具集合

摘要:更换电脑进行工具迁移,做一个记录。 1、前端 vscode plugins:Chinese (Simplified) (简体中文) Easy Sass: scss编辑生成css文件 Live Server: Launch a local development server with live reload 2、后端 idea 3、移动端 Android …

【Java集合篇】 ConcurrentHashMap在哪些地方做了并发控制

ConcurrentHashMap在哪些地方做了并发控制 ✅典型解析✅初始化桶阶段🟢桶满了会自动扩容吗🟠自动扩容的时间频率是多少 ✅put元素阶段✅扩容阶段🟠 拓展知识仓🟢ConcurrentSkipListMap和ConcurrentHashMap有什么区别☑️简单介绍一…

解决录制的 mp4 视频文件在 windows 无法播放的问题

解决录制的 mp4 视频文件在 windows 无法播放的问题 kazam 默认录制保存下来的 mp4 视频文件在 windows 中是无法直接使用的,这是由于视频编码方式的问题。解决办法: 首先安装 ffmeg 编码工具: sudo apt-get install ffmpeg 然后改变视频的…

BIND DNS 自定义zabbix监控

一、DNS统计计数器 Bind9可以使用rndc stats 命令将相关DNS统计信息存储到工作目录下,默认位置在: statistics-file "/var/named/data/named_stats.txt"; 每当名称服务器执行rndc stats命令,都会统计在统计信息文件最后附加一…

极少数据就能微调大模型,一文详解LoRA等方法的运作原理

原文:极少数据就能微调大模型,一文详解LoRA等方法的运作原理 最近和大模型一起爆火的,还有大模型的微调方法。 这类方法只用很少的数据,就能让大模型在原本表现没那么好的下游任务中“脱颖而出”,成为这个任务的专家…

【Python机器学习】SVM——一些理论知识

向数据中添加非线性特征,可以让线性模型变得强大,但是通常来说我们不知道要添加哪些特征,而且添加许多特征的计算开销会很大。有一种技巧可以在更高维度中学习分类器,而不用实际计算可能非常大的新的数据表示,这种技巧…

第87讲:XtraBackup备份工具的核心技术要点及全库备份、恢复案例

文章目录 1.XtraBackup备份工具的简介2.XBK备份工具的安装3.XBK备份工具的使用语法4.XBK备份前的准备5.使用XBK对全库进行备份5.1.XBK备份全库数据的语法格式5.2.使用XBK进行全库备份5.3.查看XBK备份的数据文件5.4.备份过程中生产的XBK文件 6.模拟故障案例并使用XBK恢复备份的数…

Vue 对象删除没有值的项

在调用后端查询接口时,有的要求参数对象里空值的项不要传,这个时候可以封装一个方法在调用接口前将对象过滤一遍。 1.新建一个名为tools.js的文件,里面放入以下代码 //对象删除没有值的项 export const removePropertyOfNull (obj) > { …

【React】常见疑问的整理

1. React渲染一个列表,需要为每一项指定key? 列表的key主要是为了react渲染阶段更好的协调(reconciliation),diff时更好的识别react元素,减少dom的创建和操作,提升效率。 设定key值方式&#x…

openssl3.2 - 官方dmeo学习 - server-arg.c

文章目录 openssl3.2 - 官方dmeo学习 - server-arg.c概述笔记备注END openssl3.2 - 官方dmeo学习 - server-arg.c 概述 TLS服务器, 等客户端来连接; 如果客户端断开了, 通过释放bio来释放客户端socket, 然后继续通过bio读来aceept. 笔记 对于开源工程, 不可能有作者那么熟悉…