在 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服务器,以事件驱动的方式编写,所以有非常好的性能,同时 ...
随机推荐
- 3 - 标准数据加密(DES)及其备选
标准数据加密(DES)及其备选 我的博客 原书:<Understanding Cryptography: A Text book for Students and Practitioners&g ...
- SQL server数据库中nvarchar和varchar的区别
先说结论: 存储内容含有汉字的使用nvarchar 存储内容全是英文没有汉字的使用varchar 1.varchar是非Unicode可变长度类型,nvarchar是Unicode可变长度类型. 2. ...
- easyui combobox两种不同的数据加载方式
1.通过http访问加载数据. $('#XXXId').combobox({ url: httpUrl, valueField: 'code', textField: 'name', });2.通过j ...
- Error building Player because scripts had compiler errors
报错信息如下: Error building Player because scripts had compiler errors Build completed with a result of ' ...
- fastapi四:uvicorn.run支持的参数
`app:指定应用app,'脚本名:FastAPI实例对象'.FastAPI实例对象 host: 字符串,允许被访问的形式 locahost.127.0.0.1.当前IP.0.0.0.0,默认为127 ...
- php8.0.0新功能:Match表达式
Match表达式是基于值的一致性进行分支计算.它的比较是严格比较.Match表达式从php8.0.0起可用.示例代码: 1 $key = 'key_1'; 2 $value = match($key) ...
- SqlSession的提交commit
SqlSession.commit(); 是执行了事务的提交
- tomcat前后端项目部署及调优
第1章 tomcat简介Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同 ...
- 如何把高德地图搜索结果导出成excel里?
前段时间,根据朋友的要求,开发了百度地图里的商家采集工具. 最近,又开发了腾讯地图里的商家采集工具. 来了兴致,干脆把高德地图的采集工具也一并搞定!:) 原理应该差不多,我就查阅了下高德地图的采集规则 ...
- 我和Java这些年的故事(五)
时光荏苒,我来到了IBM.和慕名已久的WebSphere Application Server(WAS)打起了交道. 之前我搞过Weblogic,对应用服务器的特性有了一定的了解.但WAS无疑更为庞大 ...