返回顶部
首页 > 资讯 > 操作系统 >Nginx+Linux性能调优的方法是什么
  • 142
分享到

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

2023-06-16 08:06:29 142人浏览 薄情痞子
摘要

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

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

Nginx以高性能负载均衡缓存WEB服务器出名,支撑着世界上繁忙网站中的40%。大多数使用场景下,Nginx和Linux系统的默认配置表现较好,但是仍有必要做一些调优以期达到***性能。

Nginx专家服务,已经和世界上一些繁忙网站合作来调优Nginx以达到***限度的性能,并且可以对任何需要充分发挥系统能力的客户提供支持。

简介

这里假定读者对Nginx架构和配置概念有个基本了解。本文不会重复Nginx文档的内容,而是概述各种配置选项并提供相关文档链接。

调优时,有一条较好的准则是,一次只改一个配置项,如果改后没有性能上的提升,就退回为原先的值。

我们先讨论Linux调优,因为有些值会影响在Nginx配置中可以用的值。

Linux配置

现代Linux内核(2.6+)能够很好的调节各种配置,有些配置您可能想更改。如果操作系统配置太低,那么会在内核日志中看到错误信息,因此需要调节这些配置。Linux配置项很多,本文只提及那些在普通工作负载下最可能需要调优的配置项。如果需要这些配置的详细信息,请参考Linux文档。

Backlog队列

以下设置与连接及其如何排队直接相关。如果传入的连接率很高而性能水平参差不齐,比如一些连接似乎被暂停了,那么更改这些配置可能会有用。

  • net.core.somaxconn  该项设置等待被Nginx接受的连接的排队大小。由于Nginx接受连接速度非常快,这个值通常不需要非常大,但是默认值是非常低的,所以如果你有一个高流量网站,增加这个值是个好主意。如果设置过低,那么你能在内核日志中看到错误信息,这时你应该增加这个值直到没有错误信息。注意:如果你将其设置为大于512的值,你应该同时用listen指令的backlog参数匹配这个值来更改Nginx的配置。

  • net.core.netdev_max_backlog  该项设置在交由CPU处理之前网卡缓冲数据包的速率。对于拥有高带宽的机器,这个值可能需要增加。查看网卡文档寻求相关建议,或者检查内核日志相关错误信息。

文件描述符

文件描述符是一种操作系统资源,用来处理诸如连接和打开文件的事情。对每一个连接,Nginx可以用上多达两个文件描述符。例如,如果Nginx用作代理,则其中一个用于客户端连接,另一个用于连接到被代理的服务器。如果使用了Http  keepalive,则连接描述符的使用会少得多。对于有大量连接的系统,如下设置可能需要进行调整:

  • sys.fs.file_max 这是系统范围内的文件描述符限制。

  • nofile 这是用户级别的文件描述符限制,在/etc/security/limits.conf文件中配置

临时端口

当Nginx被当作代理使用时,每一个到upstream服务器的连接都使用一个临时端口。

  • net.ipv4.ip_local_port_range  这个用来指定可以使用的起止端口号。如果你看到端口耗尽,你可以增加这个范围。常见的设置为1024到65000。

  • net.ipv4.tcp_fin_timeout  这个用于指定一个不再被使用的端口多久之后可以被另一连接再次使用。通常,这个值默认为60秒,但是可以安全地减少到30甚至15秒。

Nginx配置

下面是一些可能影响性能的Nginx指令。如前所述,我们仅讨论那些推荐大多数用户调整的指令。这里未提及到的任何指令,如果没有Nginx团队的指导,不推荐更改。

工作进程

Nginx可以运行多个工作进程,每个都能处理大量连接。你可以用如下指令控制工作进程个数以及连接如何被处理:

  • worker_processes  这个控制Nginx运行的工作进程个数。大多数情况下,一个CPU核心跑一个工作进程能够工作得很好。可以将该指令设为auto来达到与CPU核心数匹配的工作进程数。有时候,可以增加这个值,比如工作进程需要处理大量磁盘io操作的时候。这个值默认为1。

  • worker_connections  这个表示每个工作进程同时能够处理的***连接数。默认值是512,但是大多数系统能处理更大的值。这个值该设为多少取决于服务器硬件配置以及流量的特性,可以通过测试来发现。

Keepalives

持久连接可以减少打开和关闭连接所需要的CPU和网络开销,因而对性能有重大影响。Nginx终止所有客户端连接,并具有到upstream服务器的单独连接。Nginx支持客户端和upstream服务器的持久连接。如下指令涉及客户端持久连接:

  • keepalive_requests  这表示客户端能在单个持久连接上发送多少请求。默认值是100,可以设置成更高的值,这在负载生成器从单个客户端发送大量请求的测试场景中非常有用。

  • keepalive_timeout 表示一个空闲持久连接保持打开状态多长时间。

如下指令涉及upstream持久连接:

  • keepalive 这个指定每个工作进程连接到upstream服务器的空闲持久连接数量。这个指令没有默认值。

为了启用到upstream的持久连接,需要增加如下指令:

proxy_http_version 1.1;  proxy_set_header Connection "";

Access日志

记录每个请求需要花费CPU和IO周期,减少这种影响的一种方法是启用access日志缓冲。这将导致Nginx缓冲一系列日志条目,然后一次性写入文件而不是单个单个写入。

通过指定access_log指令的"buffer=size"选项可以打开access日志缓冲,该设置指定要使用的缓冲区的大小。你还可以使用"flush=time"选项告诉Nginx多长时间后把缓冲区中的条目写入文件。

定义了这两个选项后,当缓冲区放不下下一条日志,或者缓冲区中的条目超过了flush参数指定的时间,Nginx会将缓冲区中的条目写入日志文件。当工作进程重新打开日志文件或者关闭时,缓冲区中的条目也会被写入文件。也可以完全禁用access日志记录。

Sendfile

Sendfile是一个操作系统特性,可以在Nginx上启用。它通过在内核中从一个文件描述符向另一个文件描述符复制数据,往往能达到零拷贝,因而可以提供更快的TCP数据传输。Nginx可以使用该机制将缓存或者磁盘上的内容写到Socket,无需从内核空间到用户空间的上下文切换,因而非常快并且使用较少的CPU开销。由于数据永远不会触及用户空间,所以不可能把需要访问数据的过滤器插入到处理链中,不能使用任何需要改变内容的Nginx过滤器,比如gzip过滤器。Nginx默认没有启用该机制。

限制

Nginx和Nginx Plus允许设置各种限制,用来控制客户端资源消耗,以防影响系统性能以及用户体验和安全。以下是一些相关指令:

  • limit_conn / limit_conn_zone  这些指令可以用来限制Nginx允许的连接数,比如来自单个客户端IP地址的连接数。这可以防止单个客户端打开太多连接而消耗太多资源。

  • limit_rate 这个用来限制客户端在单个连接上允许使用的带宽。这可以防止某些客户端导致系统超载,因而有利于为所有客户端提供QoS保证。

  • limit_req / limit_req_zone  这些指令可以用来限制Nginx的请求处理速率。与limit_rate一起,可以防止某些客户端导致系统超载,因而有利于为所有客户端提供QoS保证。这些指令也可以用来增强安全性,尤其是对登录页面,通过限制请求速率,使得其对人类用户是合适的,而会减慢试图访问你的应用的程序。

  • max_conns  这个用来限制同时连接到upstream组中单个服务器的***连接数。这可以防止upstream服务器超载。默认值是0,表示没有限制。

  • queue  如果设置了max_conns,那么queue指令用来决定当一个请求由于upstream组中没有可用服务器或者这些服务器达到max_conns限制而不能得到处理时会发生什么。这个指令用来设定有多少请求将会排队以及排多久。如果没有设置这个指令,就不会有排队行为。

其它考虑

Nginx还有一些特性可以用来提高web应用的性能。这些特性不常出现在调优讨论中,但是有必要一提,因为它们的影响也可能比较可观。我们将讨论这些特性中的两个。

缓存

对于一个为一组web服务器或者应用服务器作负载均衡的Nginx实例来说,启用缓存可以显著地降低响应时间,同时能显著减轻后端服务器的负载。缓存本身就是一个主题,这里不会讨论。

压缩

压缩响应可以大大减小响应的大小,减少带宽占用。不过,这需要CPU资源来处理压缩,所以***在值得减少带宽占用的情况下使用。需要注意的是,不能对已经压缩的东西(比如jpeg图片)再次启用压缩。Nginx压缩配置的更多信息请参考:Nginx管理指南  - 压缩和解压缩

“Nginx+Linux性能调优的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Nginx+Linux性能调优的方法是什么

本文链接: https://lsjlt.com/news/282845.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Nginx+Linux性能调优的方法是什么
    本篇内容介绍了“Nginx+Linux性能调优的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Nginx以高性能负载均衡、缓存和w...
    99+
    2023-06-16
  • Nginx性能优化的方法是什么
    今天小编给大家分享一下Nginx性能优化的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Nginx 性能优化1、N...
    99+
    2023-07-06
  • jvm性能调优的方法是什么
    JVM性能调优的方法包括以下几个方面:1. 内存调优:通过调整JVM的堆内存大小(-Xmx和-Xms参数)来优化内存使用效率,避免过...
    99+
    2023-10-10
    jvm
  • Oracle性能调优的方法是什么
    Oracle性能调优的方法包括但不限于以下几种: 使用索引:通过在表中创建适当的索引,可以加快查询的速度。可以使用索引来加速WH...
    99+
    2024-04-19
    Oracle
  • springboot tomcat性能调优的方法是什么
    调优Spring Boot Tomcat的性能可以有以下几种方法:1. 增加Tomcat的线程池大小:通过修改Tomcat的配置文件...
    99+
    2023-10-11
    springboot tomcat
  • redis连接池性能调优的方法是什么
    Redis连接池的性能调优方法主要包括以下几个方面: 合理配置连接池参数:包括最大连接数、最小空闲连接数、连接超时时间等。根据实...
    99+
    2024-04-09
    redis
  • Nginx性能优化的方法
    这篇文章主要介绍了Nginx性能优化的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Nginx性能优化的方法文章都会有所收获,下面我们一起来看看吧。Linux系统参数优化下文中提到的一些配置,需要较新的Li...
    99+
    2023-06-27
  • jvm原理及性能调优方法是什么
    JVM(Java Virtual Machine)是Java虚拟机的缩写,是Java程序运行的核心组件,负责将Java源代码编译成字...
    99+
    2024-04-02
  • Linux性能调优的方法有哪些
    今天小编给大家分享一下Linux性能调优的方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、为磁盘I/O调整Lin...
    99+
    2023-06-28
  • MongoDB的性能基准测试与调优方法是什么
    MongoDB的性能基准测试与调优方法如下: 性能基准测试: 使用工具如YCSB(Yahoo! Cloud Serving B...
    99+
    2024-05-07
    MongoDB
  • 性能调优的标准是什么
    这篇文章主要讲解了“性能调优的标准是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“性能调优的标准是什么”吧!前几天,和一个同学瞎聊,他说,“我们公司的系...
    99+
    2024-04-02
  • MySQL性能优化的方法是什么
    本篇内容主要讲解“MySQL性能优化的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL性能优化的方法是什么”吧!一、优化思路数据查询慢,不代表...
    99+
    2024-04-02
  • MongoDB的性能优化方法是什么
    MongoDB的性能优化方法包括: 索引优化:使用合适的索引可以加快查询速度。确保为经常查询的字段创建索引,并使用复合索引来优化...
    99+
    2024-05-07
    MongoDB
  • db2数据库性能调整和优化的方法是什么
    DB2数据库性能调整和优化方法包括以下几个方面: 确保数据库设计良好:合理设计数据库结构、表结构、索引等,避免冗余数据和不必要的...
    99+
    2024-04-09
    db2
  • Vue性能优化方法是什么
    本篇内容主要讲解“Vue性能优化方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue性能优化方法是什么”吧!一、代码层面的优化1.1、v-if 和 v-show 区分使用场景v-if&...
    99+
    2023-07-04
  • linux nginx配置的方法是什么
    在Linux系统上配置Nginx的方法如下:1. 安装Nginx:- 使用包管理器(如apt、yum)进行安装:运行`sudo ap...
    99+
    2023-09-29
    linux nginx
  • Tomcat中性能优化的方法是什么
    调整JVM参数:通过调整JVM参数来优化Tomcat的性能,可以提高Tomcat的运行效率。例如增加堆内存大小、调整垃圾回收策略...
    99+
    2024-04-03
    Tomcat
  • java中groovy性能调试的方法是什么
    在Java中调试Groovy性能的方法与调试Java性能的方法类似,以下是一些常用的方法: 使用性能分析工具:可以使用一些性能分...
    99+
    2024-03-11
    java
  • Java调优的方法是什么
    本篇内容介绍了“Java调优的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Java 应用性能优化是一个老生常谈的话题,典型的性能...
    99+
    2023-06-15
  • nginx调用shell脚本的方法是什么
    在 Nginx 中调用 shell 脚本有多种方法,以下是其中的一些常用方法:1. 使用 Nginx 的 `ngx_http_she...
    99+
    2023-09-22
    nginx shell
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作