Nginx   发布时间:2019-11-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了[日常]nginx与网络事件模型大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

<div class="cnblogs_code">

Nginx 的特点:
1.2.3.fastCGI,4.5.分阶段资源分配技术,使得它的 CPU 与内存占用率非常低,保持 10,000 个没有活动的连接,它只占 2.6.支持内核 Poll 模型,能经受高负载的验,有报告表明能支持高达 50,0007.采用 master-slave 模型,能够充分利用 SMP 的优势,且能够减少工作进程在磁盘 I/O 的阻塞延迟。当采用 SELEct()/8.强大的 Upstream 与 Filter 链,9.采用了一些 os 提供的最新特性如对 sendfile (Linux2.2+),accept-filter (FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+Nginx 架构:
1.默认采用多进程后台模式启动,可以手动配置成单进程前台模式用于调试,进程数一般和cpu内核数相同,太多进程会导致竞争cpu资源,<span style="color: #000000">带来不必要的上下文切换
2.发送kill -HUP pid的信号给master进程,master进程会从新加载配置文件,启动新的worker进程,退出老的worker进程,也是-<span style="color: #000000">s reload所做的
3.在master进程建立好需要listen的 socket,然后fork出子进程,子进程抢accept_mutex的互斥锁,<span style="color: #000000">抢到的子进程进行 accept处理
4.每个子进程采用异步非阻塞事件处理,SELEct/poll/epoll/kqueue的系统调用,设置超时时间,当事件没准备好时,放到 epoll 里面,事件准备好了,我们就去读写,当读写返回 EAGAIN(再试一次)时,我们将它再次加入到 epoll 里面,线程还是只有一个,在请求间进行不断的循环切换,这里的切换没有代价,<span style="color: #000000">只要内存够大就行
5.apache那种简单的多线程,每个请求会独占一个工作线程,当并发数上到几千时,就同时有几千的线程在处理请求占用内存大,<span style="color: #000000">线程间上下文切换占用的cpu开销大
6.事件处理通常包含,网络信号(异步非阻塞),信号,<span style="color: #000000">定时器(放在一颗维护定时器的红黑树里面)

nginx的connection
1.主进程监听端口创建socket,fork出子进程,子进程互斥锁竞争accept新的连接,三次握手建立连接以后,异步非阻塞读写事件处理,<span style="color: #000000">nginx或客户端主动关掉连接
2.每个进程都有连接数的限制,ulimit -n,<span style="color: #000000">超过时创建socket会失败
3.nginx能建立的最大连接数 worker_连接数worker_进程数;作为反向代理时则为worker_连接数worker_进程数 /2,<span style="color: #000000">nginx也要请求另外的处理服务占用一个连接
4.<span style="color: #000000">利用accept_mutex锁来平衡每个worker进程的连接数

nginx与keepalive
1.http1.0和http1.1都支持长连接,默认1.0是关闭的,1.<span style="color: #000000">1是打开的
2.http1.0需要指定Connection:keep-alive表示使用长连接,响应头中会包含content-length,客户端依据这个长度表示接收完成,<span style="color: #000000">否则会一直接收数据
3.http1.1不需要指定connection,响应头中Transfer-encoding 为 chunked则会是流式传输,每块会包含当前块的长度;如果非chunked则要有content-length,<span style="color: #000000">否则会一直接收直到服务端主动断开
4.keepalive_timeout 来配置超时时间,如果为0则会直接关闭,默认65秒

apache的三种模式

1.2.需要注意worker模式下的Apache与PHP等程序模块的兼容性。 3. event 是worker模式的变种,它把服务进程从连接中分离出来,在开启KeepAlive的场合下相对worker模式能够承受更高的并发负载,https的访问 4.apache使用mod_php的话,不能使用worker模式,不是线程安全的

大佬总结

以上是大佬教程为你收集整理的[日常]nginx与网络事件模型全部内容,希望文章能够帮你解决[日常]nginx与网络事件模型所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: