linux系统关于nginx服务
2024-01-09 19:55:31
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天生就是高性能的代理服务器
文章来源:https://blog.csdn.net/qq_59207739/article/details/135487560
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!