我们聊聊 Nginx 负载的参数优化,你学会了吗?

开发 前端
`sendfile` 指令用于启用高效文件传输模式,可以减少 CPU 开销,因为它允许操作系统直接传输文件数据到网络,而不需要复制到用户空间。

Nginx 是一个高性能的 HTTP 和反向代理服务器,它的优化可以提升网站的性能和稳定性。

以下是一些基于搜索结果的 Nginx 负载参数优化经验分享。

No.1 Worker Processes

"""nginx
worker_processes auto; # 自动设置与 CPU 核心数相同的进程数
"""

这个指令用来设置 Nginx 运行的工作进程数。通常情况下,每个 CPU 核心分配一个工作进程可以取得较好的性能。

No.2 Worker CPU Affinity

"""nginx
worker_cpu_affinity 0001 0010 0100 1000; # 为每个工作进程分配特定的 CPU 核心
"""

通过为每个工作进程分配特定的 CPU 核心,可以提高 CPU 缓存的效率,减少进程间的上下文切换。

No.3 Worker Connections

"""nginx
worker_connections 10240; # 每个工作进程的最大连接数
"""

这个指令定义了每个工作进程可以打开的最大连接数,默认值通常是 512,但现代服务器硬件通常可以处理更高的连接数。

No.4 Events Configuration

"""nginx
use epoll; # 在 Linux 上使用高效的 I/O 多路复用模型
events {
worker_connections 10240; # 每个工作进程可以同时处理的连接数
}
"""

`use epoll;` 指定了事件处理模型,在 Linux 系统上,epoll 是一个高性能的 I/O 多路复用模型。

No.5 Sendfile

"""nginx
sendfile on; # 开启高效文件传输模式
"""

`sendfile` 指令用于启用高效文件传输模式,可以减少 CPU 开销,因为它允许操作系统直接传输文件数据到网络,而不需要复制到用户空间。

No.6 TCP Nopush

"""nginx
tcp_nopush on; # 结合 Sendfile 使用,减少网络报文段的数量
"""

`tcp_nopush` 指令用于确保数据在发送到网络之前被缓存,与 `sendfile` 结合使用可以提高网络传输效率。

No.7 Keepalive Timeout

"""nginx
keepalive_timeout 65; # 长连接超时时间
"""

`keepalive_timeout` 设置了长连接的超时时间,可以根据服务器的业务需求进行调整。

No.8 Gzip Compression

"""nginx
gzip on; # 开启 Gzip 压缩
gzip_min_length 1k; # 页面字节数小于 1k 不压缩
gzip_buffers 4 32k; # 设置压缩缓冲区大小
gzip_http_version 1.1; # 设置压缩版本
gzip_comp_level 6; # 设置压缩级别
gzip_types text/css text/xml application/javascript; # 设置需要压缩的 MIME 类型
"""

通过启用 Gzip 压缩,可以减少传输的数据量,加快页面加载速度。但要注意,对小文件进行压缩可能不会减少其大小。

No.9 Proxy Settings

"""nginx
proxy_connect_timeout 90; # 代理连接超时时间
proxy_send_timeout 90; # 代理发送超时时间
proxy_read_timeout 90; # 代理读取超时时间
proxy_buffers 4 32k; # 设置代理缓冲区大小
"""

这些指令用于调整代理服务器的超时设置和缓冲区大小,可以根据后端服务器的性能进行调整。

No.10 Linux System Tuning

"""shell
net.core.somaxconn = 262144 # 调整系统同时发起的tcp连接数
net.ipv4.tcp_tw_recycle = 1 # 启用 TCP 连接重用
net.ipv4.tcp_fin_timeout = 15 # 减少临时端口的等待时间
"""

调整 Linux 系统内核参数可以提升服务器的网络性能。

No.11 Access Log Buffering

"""nginx
access_log /var/log/nginx/access.log main buffer=16k flush=5m; # 使用缓冲区记录访问日志
"""

通过设置日志缓冲区,可以减少磁盘 I/O 操作,提高性能。

No.12 Limitations

"""nginx
limit_conn perip 2; # 限制单个 IP 地址的连接数
limit_rate 300k; # 限制单个连接的速率
"""

使用 `limit_conn` 和 `limit_rate` 可以限制客户端的连接数和带宽使用,防止单个客户端占用过多资源。

责任编辑:武晓燕 来源: IT那活儿
相关推荐

2023-12-05 17:57:13

nginx参数

2023-12-07 12:29:49

Nginx负载均衡策略

2024-09-13 09:05:31

架构思维程序

2023-11-13 18:36:04

知识抽取NER

2023-10-31 14:04:17

Rust类型编译器

2024-10-31 09:15:09

2024-08-06 09:47:57

2023-06-07 14:07:00

架构

2023-04-13 08:40:12

MySQL服务器SELECT

2022-12-26 07:48:04

敏捷项目

2024-06-12 08:36:25

2024-03-05 10:09:16

restfulHTTPAPI

2024-08-19 10:24:14

2023-07-10 08:36:21

工具pptword

2023-01-29 08:08:34

并发库conc通用库

2024-03-04 07:41:18

SpringAOPOOP​

2022-12-27 08:45:00

绘制菜单符号

2022-12-08 10:49:43

2022-09-26 08:49:11

Java架构CPU

2022-07-11 09:00:37

依赖配置文件Mybati
点赞
收藏

51CTO技术栈公众号