avatar

Nginx优化之高并发配置

Nginx优化之高并发配置

1.高并发简介

高并发(High Concurrency)通常是指通过设计保证系统能够同时并行处理很多请求。通俗来讲,高并发是指在同一个时间点,有很多用户同时的访问同一 API 接口或者 Url 地址。它经常会发生在有大活跃用户量,用户高聚集的业务场景中。

2.优化思路

2.1 系统层面优化

1
2
3
4
5
6
7
8
9
10
11
12
#调整同时打开文件数量
ulimit -n 65536

#TCP最大连接数(somaxconn)
echo 10000 > /proc/sys/net/core/somaxconn

#TCP连接立即回收、回用(recycle、reuse)
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle

#不做TCP洪水抵御
echo 0 > /proc/sys/net/ipv4/tcp_syncookies

2.2 Linux内核参数优化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#优化内核参数
vim /etc/sysctl.conf

net.core.somaxconn = 262144
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_max_syn_backlog = 16384
net.core.netdev_max_backlog = 20000
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_orphans = 131072
net.ipv4.tcp_syncookies = 0

#生效
sysctl -p

2.3 Nginx配置文件优化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
vim /etc/nginx/nginx.conf

worker_processes auto; #工作进程数
worker_rlimit_nofile 65535; #工作进程最大打开文件数
events {
use epoll; #使用epoll事件驱动模型
worker_connections 65535; #工作进程最大连接数
multi_accept on; #设置工作进程同时接收多个网络连接
}

http {
sendfile on; #开启高效文件传输模式
send_timeout 10s; #设置服务器和客户端连接超时时间
client_header_buffer_size 4k; #客户端请求头部的缓冲区大小
tcp_nopush on; #将响应头和正文的开始部分一起发送,而不一个接一个的发送。
tcp_nodelay on; #不要缓存数据
keepalive_timeout 0; #服务器和客户端保持活动的时间是65s,之后断开,高并发时可以设置为0
}

2.4 扩展服务器的CPU和内存

这个就不在这里说了,这个大家都懂的操作,再说就没意义了。无非就是联系厂商增加CPU和内存,或者自己买CPU和内存,是云上的就扩展CPU和内存就可以了。

文章作者: Wu Fei
文章链接: http://linuxwf.com/2022/11/01/Nginx%E4%BC%98%E5%8C%96%E4%B9%8B%E9%AB%98%E5%B9%B6%E5%8F%91%E9%85%8D%E7%BD%AE/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WF's Blog
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论