在 Linux 上微调 Nginx 获得最佳性能的 8 种方法
转载来自:Linux迷
链接:https://www.linuxmi.com/linux-nginx-performance.html
NGINX 是一种流行的、免费的开源 Web 服务器。默认的 NGINX 配置足以让 Web 服务器正常工作。
但是,如果您想充分利用 NGINX,则需要使用其配置文件并设置可优化服务器性能的参数。您将在Linux 机器上的 /etc/nginx 目录中找到配置文件。
什么是 NGINX?
NGINX 是一种现代 Web 服务器,您可以将其用作媒体流、邮件服务器、反向代理、负载平衡器、缓存服务器等。
被 VMware、IBM、Cisco、Apple、Microsoft LinkedIn、Netflix、Facebook、Twitter 等许多大公司使用,NGINX 以其一流的性能而广为人知。使用 NGINX 的另一个优点是易于配置和学习。
在 Linux 上调整 NGINX 性能的先决条件
在开始使用 NGINX 配置之前,您需要满足以下要求:
- 在 Linux 上部署和配置 NGINX 服务器 链接:https://www.linuxmi.com/debian-11-nginx.html
- 对 NGINX 及其配置文件的基本了解
如果您满足这些要求,您就可以调整 NGINX 以获得最佳性能。让我们看看如何去做。
1.在NGINX中配置工作进程
NGINX 架构由一个主进程和多个工作进程组成。主进程的工作是评估配置和管理工人。另一方面,工作进程的作用是处理传入的请求并在客户端和服务器之间创建连接。
默认情况下,过程值设置为自动。这会将工作进程的数量设置为等于可用 CPU 内核的数量。要了解系统中有多少个 CPU 内核,请运行以下命令:
linuxmi@linuxmi:~/www.linuxmi.com$ grep processor /proc/cpuinfo | wc -l
我的测试机器只有1。
如果想增加 worker 进程数,需要在 NGINX 的配置文件中进行配置。
使用 nano 打开文件:
linuxmi@linuxmi:~/www.linuxmi.com$ nano /etc/nginx/nginx.conf

要配置更多工作进程,请将默认值更改为系统中可用 CPU 内核的最大数量。
2.配置 Worker_Connections
您可以修改以增强 NGINX 性能的另一个参数是Worker_Connections。这是每个工作进程可以同时处理的最大 TCP 连接数。
大多数系统的默认值为 512 个连接,但许多现代系统也支持更大的连接数。您可以检查您的系统支持多少个连接:
linuxmi@linuxmi:~/www.linuxmi.com$ ulimit -n

输出将是支持的最大连接数。然后,您可以修改 NGINX 配置文件中的 worker_connections 变量以提高性能。

3. 在 NGINX 中允许 GZIP 压缩
NGINX 使用 GZIP 进行文件压缩和解压缩。如果在 NGINX 配置文件中启用,您可以节省带宽并在连接缓慢时提高网站的加载时间。
要允许 GZIP 压缩,请在 NGINX 配置文件中添加以下行:
server {
gzip on;
gzip_vary on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
gzip_disable "MSIE [1-6]\.";
}

4. 限制 NGINX 中的超时值
减少超时值在增强 NGINX 性能方面也起着重要作用。keepalive 连接减少了打开和关闭连接时的处理器和网络开销。
您可以修改配置文件中的以下参数来限制超时:
http
{
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
}

5.调整缓冲区大小
您还可以调整 NGINX 缓冲区以优化服务器性能。如果缓冲区大小太小,那么 NGINX 将写入一个临时文件,导致大量 I/O 操作不断运行。
您需要为 NGINX 设置以下缓冲区参数以使其发挥最佳功能:
http
{
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 4 4k;
}
6.禁用访问日志或启用访问日志缓冲
日志会消耗大量磁盘空间和 CPU/IO 周期,如果它记录每个请求,这会影响服务器的性能。
您可以禁用访问日志,这将节省一些磁盘空间和 CPU 处理。要禁用访问日志,请将以下行添加到 NGINX 配置文件中:
access_log off;
日志很重要,因为它们有助于解决问题。完全禁用日志不是一个好的做法。在这种情况下,您可以启用访问日志缓冲。这将允许 NGINX 缓冲一系列日志并将它们一次写入日志文件,而不是对每个请求应用不同的日志操作。
在 NGINX 配置文件中添加以下行以允许访问日志缓冲:
access_log /var/log/nginx/access.log main buffer=16k
7.调整 NGINX 静态内容缓存周期
网站上跨页面保持相同的内容称为静态内容。缓存此内容允许将其放置在易于访问的位置。这种机制减少了带宽使用,允许快速访问,并随后提高了网站的性能。
当客户端请求静态内容时,服务器将提供内容的缓存版本。在 /etc/nginx/sites-available 目录中的虚拟主机文件中添加以下行:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 100d;
}
此配置将从上次浏览器访问时间起将文件缓存 100 天。
8. 在 NGINX 中启用打开文件缓存
您还可以在 NGINX 配置文件中使用打开文件缓存参数来增强其性能。该指令允许将文件描述符和经常访问的文件缓存到服务器。
在配置文件的http部分添加以下行以启用打开文件缓存:
http {
open_file_cache max=1024 inactive=10s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
}
通过修改其配置文件充分利用 NGINX
更改配置时要遵循的一个好习惯是一次处理一个设置并对其进行测试。如果有效,请转到下一个设置。如果不是,您可以随时将配置更改回默认值。
通过修改 NGINX 配置文件(如 nginx.conf 和虚拟主机文件)中配置的参数,您可以熟知 NGINX 以获得最佳性能。
在 Linux 上微调 Nginx 获得最佳性能的 8 种方法的更多相关文章
- 在Linux上使用Nginx为Solr集群做负载均衡
在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...
- Linux+.Net Core+Nginx(在Linux上使用Nginx反向代理.Net Core 项目)
Linux+.Net Core+Nginx 之前的文章中有提到关于使用Nginx在linux来实现反向代理,今天我们继续加点料.在Centos7中部署.NetCore,然后使用Nginx进行反向代理! ...
- 01 linux上安装 nginx
一:linux上安装 nginx 下载nginx:wget http://nginx.org/download/nginx-1.6.2.tar.gz 解压:tar zxvf nginx-1.6.2.t ...
- [运维] 如何在 Linux 上安装 Nginx 服务器(一)
原因 因为小程序对素材的大小是由要求的, 所以为了简化小程序上的内存要求, 在Linux上安装nginx来作为静态资源服务器, 这篇为第一篇, 主要介绍怎么在Linux上安装nginx, 下一篇将会介 ...
- linux上备份Oracle时EXP-00091的错误解决方法
unix/linux上备份Oracle时EXP-00091的错误解决方法 unix/linux上备份数据时的错误解决方法 EXP-00091: Exporting questionable stati ...
- Linux下查看压缩文件内容的 10 种方法
Linux下查看压缩文件内容的 10 种方法 通常来说,我们查看归档或压缩文件的内容,需要先进行解压缩,然后再查看,比较麻烦.今天给大家介绍 10 不同方法,能够让你轻松地在未解压缩的情况下查看归档或 ...
- linux中快速清空文件内容的几种方法
这篇文章主要介绍了linux中快速清空文件内容的几种方法,需要的朋友可以参考下 $ : > filename $ > filename $ echo "" > f ...
- Linux下查看alert日志文件的两种方法
--linux下查看alert日志文件的两种方法: --方法1: SQL> show parameter background_dump_dest; NAME TYPE VALUE ------ ...
- linux中删除文件内空白行的几种方法。
linux中删除文件内空白行的几种方法 有时你可能需要在 Linux 中删除某个文件中的空行.如果是的,你可以使用下面方法中的其中一个.有很多方法可以做到,但我在这里只是列举一些简单的方法. 你可能已 ...
- Linux上配置Nginx+PHP5(FastCGI)
原为地址:http://www.laruence.com/2009/07/28/1030.html Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,以事件驱动的方式编写,所以有非常好的性能,同时 ...
随机推荐
- Winform窗体中打开PDF文件的三种方式
来源:https://www.jb51.net/article/251451.htm
- 杂:pthread_cond_timedwait导致死锁
地球人都知道1:pthread_cond_timedwait使用时,需要对[条件]加锁.[条件]也是一种线程共享资源. 地球人都知道2:1个互斥锁不应该管理2类及以上的多线程共享资源 1+2=下面这样 ...
- Linux环境下给python项目写个启停服务
写个服务,写完后放在/lib/systemd/system路径下 update_rule.server [Unit] Description = TinyScan update rule [Servi ...
- 采样定理与SDM
1.信噪比=6.02N+1.76dB 对于这个经常引用的AD/DA转换器理论信噪比(SNR)公式,代表一个完美的N位ADC的理论性能.下面先计算N位模数转换器(ADC)的理论量化噪声.一旦通过计算均方 ...
- geoserver的自动化部署
年后接到一个任务,需求是这样的: 搭建一个geoserver服务器,将公司内部的mbtile数据(EPSG:3857)发布出去 服务的输出格式为MBTiles with vector tiles的矢量 ...
- 【笔记】BootstrapTable带参数刷新数据的坑
$(<表选择器>).bootstrapTable('refresh', { query: { param1: a, param2: b } ); bootstrapTable中queryP ...
- c++中内联函数和宏函数的区别
一. 区别: 是不是函数: 宏定义不是函数,但是使用起来像函数.预处理器用复制宏代码的方式代替函数的调用,省去了函数压栈退栈过程,提高了效率: 内联函数本质上是一个函数,内联函数一般用于函数体的代码比 ...
- Windows打开回收站的几种方式
1. 桌面双击回收站图标打开回收站,简单.快捷.方便,但在打开多个窗口时候还要最小化这些窗口以显示桌面,如果还要迅速恢复这些窗口的话也算是麻烦 2. 磁盘每个分区根目录下都有一个名称为$Recycle ...
- python之路5:常用模块
模块简介 time & datetime模块 random os sys shutil json & pickle shelve xml处理 configparser hashlib ...
- 1.PS基本操作
1.图片颜色变淡 1.新建一个白色的画板 什么尺寸都可以 只要能装得下你这张图 2.把这张图拖进去放到画板上 3.在右边找到这张图的图层 更改透明度到你觉得合适的程度 (我初步估计可能20%左右吧)