linux系统关于nginx服务

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 ports

5)代理(proxy)设计,可以说是nginx深入骨髓的设计,无论是对于HTTP,还是对于FastCGI、memcache、Redis等的网络请求或响应,本质上都采用了代理机制。所以,nginx天生就是高性能的代理服务器
相关推荐
大树8824 分钟前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠27 分钟前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质1 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush41 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5201 小时前
Linux 11 动态监控指令top
linux
Inhand陈工2 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智2 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩2 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_2 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
古城小栈3 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix