百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Nginx 如何实现高并发?常见的优化手段有哪些?

off999 2025-02-03 14:33 33 浏览 0 评论

这是一位读者带回来的面试题

Nginx 是如何实现并发的?为什么 Nginx 不使用多线程?Nginx常见的优化手段有哪些?502错误可能原因有哪些?

面试官心理分析

主要是看应聘人员的对NGINX的基本原理是否熟悉,因为大多数人多多少少都懂点NGINX,但是真正其明白原理的可能少之又少。明白其原理,才能做优化,否则只能照样搬样,出了问题也无从下手。

懂皮毛的人,一般会做个 Web Server,搭建一个 Web 站点;初级运维可能搞个 HTTPS 、配置一个反向代理; 中级运维定义个 upstream、写个正则判断;老鸟做个性能优化、写个ACL,还有可能改改源码(小编表示没有改源码的能力)。

面试题剖析

Nginx 是如何实现高并发的?

异步,非阻塞,使用了epoll 和大量的底层代码优化。

如果一个server采用一个进程负责一个request的方式,那么进程数就是并发数。正常情况下,会有很多进程一直在等待中。

而nginx采用一个master进程,多个woker进程的模式。

  • master进程主要负责收集、分发请求。每当一个请求过来时,master就拉起一个worker进程负责处理这个请求。
  • 同时master进程也负责监控woker的状态,保证高可靠性
  • woker进程一般设置为跟cpu核心数一致。nginx的woker进程在同一时间可以处理的请求数只受内存限制,可以处理多个请求。
  • Nginx 的异步非阻塞工作方式正把当中的等待时间利用起来了。在需要等待的时候,这些进程就空闲出来待命了,因此表现为少数几个进程就解决了大量的并发问题。

每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到什么程度呢?处理到可能发生阻塞的地方,比如向上游(后端)服务器转发request,并等待请求返回。那么,这个处理的worker很聪明,他会在发送完请求后,注册一个事件:“如果upstream返回了,告诉我一声,我再接着干”。于是他就休息去了。

此时,如果再有request 进来,他就可以很快再按这种方式处理。而一旦上游服务器返回了,就会触发这个事件,worker才会来接手,这个request才会接着往下走。

为什么 Nginx 不使用多线程?

Apache: 创建多个进程或线程,而每个进程或线程都会为其分配 cpu 和内存(线程要比进程小的多,所以worker支持比perfork高的并发),并发过大会耗光服务器资源。

Nginx: 采用单线程来异步非阻塞处理请求(管理员可以配置Nginx主进程的工作进程的数量)(epoll),不会为每个请求分配cpu和内存资源,节省了大量资源,同时也减少了大量的CPU的上下文切换。所以才使得Nginx支持更高的并发。

Nginx常见的优化配置有哪些?

1)调整worker_processes

指Nginx要生成的worker数量,最佳实践是每个CPU运行1个工作进程。

了解系统中的CPU核心数,输入

$ grep processor / proc / cpuinfo | wc -l

2)最大化worker_connections

Nginx Web服务器可以同时提供服务的客户端数。与worker_processes结合使用时,获得每秒可以服务的最大客户端数

最大客户端数/秒=工作进程*工作者连接数

为了最大化Nginx的全部潜力,应将工作者连接设置为核心一次可以运行的允许的最大进程数1024。Nginx 常用配置汇总!从入门到干活足矣

3)启用Gzip压缩

压缩文件大小,减少了客户端http的传输带宽,因此提高了页面加载速度

建议的gzip配置示例如下:( 在http部分内)

4)为静态文件启用缓存

为静态文件启用缓存,以减少带宽并提高性能,可以添加下面的命令,限定计算机缓存网页的静态文件:

location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {

expires 365d;

}

5)Timeouts

keepalive连接减少了打开和关闭连接所需的CPU和网络开销,获得最佳性能需要调整的变量可参考:

6)禁用access_logs

访问日志记录,它记录每个nginx请求,因此消耗了大量CPU资源,从而降低了nginx性能。

完全禁用访问日志记录

access_log off;

如果必须具有访问日志记录,则启用访问日志缓冲

access_log /var/log/nginx/access.log主缓冲区= 16k

502报错可能原因有哪些?

  • 1)FastCGI进程是否已经启动
  • 2)FastCGI worker进程数是否不够
  • 3)FastCGI执行时间过长
  • 4)FastCGI Buffer不够

nginx和apache一样,有前端缓冲限制,可以调整缓冲参数

fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
  • 5)Proxy Buffer不够

如果你用了Proxying,调整

proxy_buffer_size 16k;
proxy_buffers 4 16k;
  • 6)php脚本执行时间过长

将php-fpm.conf的0s的0s改成一个时间

相关推荐

搜狗输入法ios版下载(搜狗输入法2020最新版下载苹果手机)

方法/步骤首先在手机上下载并安装搜狗输入法。然后打开手机设置,点击“通用”,点击“键盘”。最后选择“键盘”,点击“添加新键盘”,点击“搜狗输入法”即可。1、百度输入法是百度公司免费提供的输入软件。20...

单机版仙剑4能在手机玩吗(仙剑奇侠传4单机版手机可以玩吗)

1、首先打开pc端浏览器,搜索栏中输入仙剑奇侠传官网,按回车键。2、其次弹出相关词条后点击带有“官网”认证标志的仙剑奇侠传4官网词条,进入官网。3、最后点击右上角“下载游戏”,点击确认下载即可在手机上...

不正经的聊天软件推荐(什么叫不正经的聊天)
不正经的聊天软件推荐(什么叫不正经的聊天)

要是自己没意思,不想,就直接拉黑。要是自己有意思,那你就可以配合他,满足下礼貌性的回答,谢谢.!朋友,我们管不住别人的嘴,我们只管做好自己就可以了.你的确不正经。女人说你不正经说明对你有好感。要讨厌你也不会这样和你聊。知足吧老兄客观论...

2026-01-21 07:51 off999

消消乐免费游戏(消消乐免费游戏APP)

消消乐的操作方法01,玩开心消消乐首先要知道,最少都要三个相连的同种类动物才能消除掉,并且要知道关卡要求我们消除的动物和动物数量,要注意每个关卡都有步数限定。02,在玩开心消消乐有4个小动物相连时,可...

win10专业版(win10专业版激活密钥)

win10专业工作站版好用。这是一个让人爱不得已的版本,使用过后,那“丝滑体验”和大幅度提升的硬盘评分刷新了从前对win10的看法。专业工作站版属于win10专业版的顶级系统,它拥有服务器级别的硬件支...

金山毒霸有必要安装吗(金山毒霸有没有必要安装)

如果您没有其它中意的杀毒软件,还是不建议您卸载。毕竟有杀毒软件的防护,在一定程度上还是可以抵御病毒的入侵。尽管开着杀毒软件会消耗不少系统资源,但是在错综复杂的互联网时代还有电脑资源共享的网络时代,杀毒...

三国志11(三国志11pk 2.2)

庙坐标(153,2)。下载一个vpn修改器。通过vpn可以查看庙和遗迹的具体位置。显示一个庙的为(153,2),记住该坐标后打开游戏载入游戏存档。为了方便找宝物,把刘邦势力换成了拓跋珪势力。为了满...

输入户型图出装修效果的app(输入户型图出装修效果的app有哪些)

个人推荐酷家乐APP酷家乐App是当前使用最多的一个户型图绘制软件,在功能上酷家乐的功能还是比较全面的,对于电脑不好的用户来说酷家乐也是一个比较不错的,渲染上仅仅需要20秒左右,这对于不喜欢等待的用户...

剪切mp3音乐的免费软件(免费mp3剪切器手机版下载)

苹果手机用可以用易剪软件剪辑音乐,具体操作步骤如下:1、首先我们打开苹果手机打开易剪软件,选择剪辑。2、点击工具栏“+”导入音频。3、选择一个想要剪辑音频的来源。4、插入完成后,音频波形就出来了。...

360手机管家官方免费下载(360智能手机管家)

可以选择强行停止就好了。这个360手机管家如果是你从商品商店下载安装的,那么这个是可以删除的,你点住他选择卸载就行了,如果你是360的手机自带的,手机管家你是无法删除的,你只能够把它选择强行停止了,这...

最好看最新高清中文字幕电影

在网上搜"影片名"+中文字幕然后,下载《美国往事》《银翼杀手》《我是传奇》(两个结局)《纽约黑帮》《紫色》《杀手莱昂》《心灵捕手》《杀手47》……想要免费观看高清电影的话!我强力为您推荐“影视大全...

免费主题软件大全(免费主题软件app)
免费主题软件大全(免费主题软件app)

步骤如下:1.我们首先打开vivo手机,在vivo手机自带的APP找到I主题,然后打开I主题,会在打开的时候看到精选里面包含了:主题,字体,铃声,息屏和动态壁纸。2.我们在我们在此页面的右上角找到一个放大镜的标识,点击,然后在弹出的页面输...

2026-01-21 05:43 off999

cad转换器免费版(cad转换器软件下载)

CAD版本转换器是一种非常有用的工具,可以帮助用户将不同版本的CAD文件进行转换,以便在不同的CAD软件中使用。在选择CAD版本转换器时,用户需要考虑以下几个方面:转换的速度、转换的准确性、支持的CA...

windows7旗舰版多少钱(win7旗舰版要多少钱)

windows7的旗舰版版本是6.1.7600。处理器:1GHz32位或者64位处理器;内存:1GB及以上(最低安装要求512M,且必须是64位操作系统);显卡:支持DirectX9128M及以上...

游戏交易平台官网(千岛游戏交易平台官网)

8868交易平台,是专门为手机游戏提供相关交易服务的电子商务平台,用户可以在这里方便地买到热门手机游戏的金币、道具、装备等虚拟物品。8868提供免费网络游戏帐号交易、游戏币交易、首充号购买、手机游戏代...

取消回复欢迎 发表评论: