我的编程空间,编程开发者的网络收藏夹
学习永远不晚

05-Nginx性能调优

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

05-Nginx性能调优

目录

Nginx 的并发处理机制

全局模块下的调优

worker_processes 2

worker_cpu_affinity 01 10

worker_rlimit_nofile 65535

events 模块下的调优

worker_connections 1024

accept_mutex on

accept_mutex_delay 500ms

multi_accept on

use epoll

A、 select | poll | epoll

B、 rtsig

C、 kqueue

D、/dev/poll

http 模块下的调优

非调优属性简介

include mime.types;

default_type     application/octet-stream;

charset utf-8;

sendfile on

tcp_nopush on

tcp_nodelay on

keepalive_timeout 60

keepalive_requests 10000

client_body_timeout 10


Nginx 的并发处理机制

一般情况下并发处理机制有三种:多进程、多线程,与异步机制。Nginx 对于并发的处理同时采用了三种机制。当然,其异步机制使用的是异步非阻塞方式。

我们知道Nginx 的进程分为两类:master 进程与 worker 进程。每个 master 进程可以生成多个 worker 进程,所以其是多进程的。每个 worker 进程可以同时处理多个用户请求,每个用户请求会由一个线程来处理,所以其是多线程的。

那么,如何解释其“异步非阻塞”并发处理机制呢?

worker 进程采用的就是 epoll 多路复用机制来对后端服务器进行处理的。当后端服务器返回结果后,后端服务器就会回调 epoll 多路复用器,由多路复用器对相应的 worker 进程进行通知。此时,worker 进程就会挂起当前正在处理的事务,拿 IO 返回结果去响应客户端请求。响应完毕后,会再继续执行挂起的事务。这个过程就是“异步非阻塞”的。

      1. 全局模块下的调优

  1. worker_processes 2

打开 nginx.conf 配置文件,可以看到 worker_processes 的默认值为 1。

worker_processes,工作进程,用于指定 Nginx 的工作进程数量。其数值一般设置为 CPU

内核数量,或内核数量的整数倍

不过需要注意,该值不仅仅取决于 CPU 内核数量,还与硬盘数量及负载均衡模式相关。在不确定时可以指定其值为 auto。

  1. worker_cpu_affinity 01 10


将 worker 进程与具体的内核进行绑定。不过,若指定 worker_processes 的值为 auto, 则无法设置 worker_cpu_affinity。

该设置是通过二进制进行的。每个内核使用一个二进制位表示,0 代表内核关闭,1 代表内核开启。也就是说,有几个内核,就需要使用几个二进制位。

  1. worker_rlimit_nofile 65535

用于设置一个 worker 进程所能打开的最多文件数量。其默认值与当前 Linux 系统可以打开的最大文件描述符数量相同。

      1. events 模块下的调优

  1. worker_connections 1024

设置每一个 worker 进程可以并发处理的最大连接数。该值不能超过 worker_rlimit_nofile

的值。

  1. accept_mutex on

  1. on:默认值,表示当一个新连接到达时,那些没有处于工作状态的 worker 将以串行方式来处理;
  2. off:表示当一个新连接到达时,所有的 worker 都会被唤醒,不过只有一个worker 能获取新连接,其它的 worker 会重新进入阻塞状态,这就是“惊群”现象。

  1. accept_mutex_delay 500ms

设置队首 worker 会尝试获取互斥锁的时间间隔。默认值为 500 毫秒。

  1. multi_accept on

  1. off系统会逐个拿出新连接按照负载均衡策略,将其分配给当前处理连接个数最少的worker。
  2. on系统会实时的统计出各个 worker 当前正在处理的连接个数,然后会按照“缺编” 最多的 worker 的“缺编”数量,一次性将这么多的新连接分配给该 worker。

  1. use epoll

设置worker 与客户端连接的处理方式。Nginx 会自动选择适合当前系统的最高效的方式。当然,也可以使用 use 指令明确指定所要使用的连接处理方式。user 的取值有以下几种: select | poll | epoll | rtsig | kqueue | /dev/poll 。

A、 select | poll | epoll

这是三种多路复用机制。select 与 poll 工作原理几乎相同,而epoll 的效率最高,是现在使用最多的一种多路复用机制。

B、 rtsig

realtime signal,实时信号,Linux 2.2.19+的高效连接处理方式。但在 在Linux 2.6 版本后, 不再支持该方式。

C、 kqueue

应用在 BSD 系统上的epoll。

D、/dev/poll

UNIX 系统上使用的 poll。

      1. http 模块下的调优

  1. 非调优属性简介

  1. include mime.types;

将当前目录(conf 目录)中的 mime.types 文件包含进来。

  1. default_type     application/octet-stream;

对于无扩展名的文件,默认其为 application/octet-stream 类型,即 Nginx 会将其作为一个八进制流文件来处理。

  1. charset utf-8;

设置请求与响应的字符编码。

  1. sendfile on

设置为 on 则开启 Linux 系统的零拷贝机制,否则不启用零拷贝。当然,开启后是否起作用,要看所使用的系统版本。CentOS6 及其以上版本支持 sendfile 零拷贝。

  1. tcp_nopush on

  1. on:以单独的数据包形式发送 Nginx 的响应头信息,而真正的响应体数据会再以数据包的形式发送,这个数据包中就不再包含响应头信息了。
  2. off:默认值,响应头信息包含在每一个响应体数据包中。

  1. tcp_nodelay on

  1. on:不设置数据发送缓存,即不推迟发送,适合于传输小数据,无需缓存。
  2. off:开启发送缓存。若传输的数据是图片等大数据量文件,则建议设置为 off。

  1. keepalive_timeout 60

设置客户端与Nginx 间所建立的长连接的生命超时时间,时间到达,则连接将自动关闭。单位秒。

  1. keepalive_requests 10000

设置一个长连接最多可以发送的请求数。该值需要在真实环境下测试。

  1. client_body_timeout 10

设置客户端获取 Nginx 响应的超时时限,即一个请求从客户端发出到接收到Nginx 的响应的最长时间间隔。若超时,则认为本次请求失败。

来源地址:https://blog.csdn.net/xianghanscce/article/details/127762473

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

05-Nginx性能调优

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Nginx+Linux性能调优的方法是什么

本篇内容介绍了“Nginx+Linux性能调优的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Nginx以高性能负载均衡、缓存和w
2023-06-16

MySQL性能调优

对于全栈而言,数据库技能不可或缺,关系型数据库或者nosql,内存型数据库或者偏磁盘存储的数据库,对象存储的数据库或者图数据库……林林总总,但是第一必备技能还应该是MySQL。从LAMP的兴起,到Mariadb的出现,甚至PG的到来,熟练的
2022-05-13

Nginx负载均衡的性能测试与调优实践

概述:Nginx作为一款高性能的反向代理服务器,常用于负载均衡的应用场景。本文将介绍如何进行Nginx负载均衡的性能测试,并通过调优实践提升其性能。性能测试准备:在进行性能测试之前,我们需要准备一台或多台具备较好性能的服务器,安装Nginx
2023-10-21

如何优化Nginx的性能

今天就跟大家聊聊有关如何优化Nginx的性能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。文件描述符限制由于每个TCP连接都要占用一个文件描述符,一旦文件描述符耗尽,新的连接到来就会
2023-06-15

Nginx性能优化的方法

这篇文章主要介绍了Nginx性能优化的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Nginx性能优化的方法文章都会有所收获,下面我们一起来看看吧。Linux系统参数优化下文中提到的一些配置,需要较新的Li
2023-06-27

WebLogic Server 性能调优

任何在市场上成功的产品都拥有良好的性能。虽然成为象WebLogic Server这样广泛使用的产品需要具备很多特性,但性能绝对是必不可少的。 良好的编程习惯在帮助应用运行方面起了很大的作用,但是仅有它们还是不够的。应用服务器必须能够在多种硬
2023-06-03

使用Docker Compose、Nginx和MariaDB优化PHP应用程序的性能调优

引言:在现代的Web应用程序开发中,性能是一个至关重要的考虑因素。在处理大量并发请求时,优化应用程序的性能可以显著提高用户体验,并减少服务器资源的消耗。本文介绍如何使用Docker Compose、Nginx和MariaDB优化PHP应用程
2023-10-21

PHP 性能优化:图像处理性能调优

优化图像处理性能的方法:禁用可选的图像处理函数扩展(gd 库)。使用更快的第三方图像处理库(如 imagick 或 intervention image)。缓存已处理的图像以避免重复执行耗时的操作。延迟加载图像以减少页面加载时间。PHP 性
PHP 性能优化:图像处理性能调优
2024-05-10

浅谈一下Nginx性能优化

这篇文章主要介绍了Nginx性能优化,Nginx(enginex)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,需要的朋友可以参考下
2023-05-15

Golang性能调优指南

Golang 是一种由 Google 开发的开源编程语言,以其简洁、高效的特点受到许多开发者的青睐。然而,在开发过程中,为了保证程序的性能和效率,我们有时需要对代码进行调优。本文将介绍一些 Golang 性能调优的技巧,并提供具体的代码示例
Golang性能调优指南
2024-03-06

SQL查询优化-MySQL 性能调优

  在进行库表结构设计时,我们要考虑到以后的查询要如何的使用这些表,同样,编写 SQL 语句的时候也要考虑到如何使用到目前已经存在的索引,或是如何增加新的索引才能提高查询的性能。  想要对存在性能问题的查询进行优化,需要能够找到这些查询,下面先看下如何获取有性能问题的SQL。  如何设计最优的数据库表结构,如何建立最好
SQL查询优化-MySQL 性能调优
2024-04-18

Golang协程的性能调优

为提高 go 协程性能,可采取以下措施:限制协程数量以避免上下文切换开销。使用协程池,管理协程复用以减少创建和销毁开销。采用非阻塞 i/o 操作,如通道,以避免协程执行阻塞。使用 select 语句从多个通道接收消息,提高等待事件发生的效率
Golang协程的性能调优
2024-04-16

编程热搜

目录