Nginx-https优化
1 | # 不同 worker 绑定到不同核上,提高 CPU 缓存命中率,auto 根据 worker 数量自动绑定 CPU。 |
用于加密和解密TLS会话票据的密钥设置,生成 ticket 文件,必须含有80或48个字节的随机数据。
1 | openssl rand 80> ticket.key |
certbot 自动化脚本生成 Let’s Encrypt 免费证书。
1 | yum install python2-certbot-nginx |
域名
test.codezm.com
必须可访问。CA机构才能颁发证书。https://certbot.eff.org/docs/install.html
Tcp 优化
SYN_RCVD 状态
- SYN -
SYN_RECEIVED QUEUE
net.ipv4.tcp_max_syn_backlog=262144
接收SYN
最大数量,半链接个数。SYN
- 查看:
cat /proc/sys/net/ipv4/tcp_max_syn_backlog
- 查看:
net.ipv4.tcp_synack_retries
被动建立连接时,发送 SYN/ACK 的重试次数。SYN+ACK
- 查看:
cat /proc/sys/net/ipv4/tcp_synack_retries
- 查看:
ACCEPT
-ESTABLISHED QUEUE
net.core.somaxconn
系统级最大 backlog 队列长度。- nginx 端口限制 backlog 队列长度
listen 80 backlog=8192;
- 如何查看 Accept queue 溢出?
netstat -s | grep LISTEN
,返回SYNS to LISTEN sockets ignored
时。
防止 SYN
攻击,开启 net.ipv4.tcp_syncookies=1
,在 SYN 队列满时,启用 cookie。
一切皆文件:句柄数的上限
操作系统全局
fs.file-max 操作系统可使用的最大句柄数
1
sysctl -a | grep file-max
- fs.file-nr 查看当前已分配(正使用)、待重新分配、上限
限制用户
/etc/security/limits.conf
- root soft nofile 65535
- root hard nofile 65535
限制
root
用户,软、硬链接个数。hard
强制的、真实的链接,soft
软的限制,进程在运行时自动的修改软限制、但无法修改硬的,soft
一定要小于hard
。
* - noproc 11000
*
代表针对所有用户-
的意思为soft
和hard
全部限制。nofile 代表最大文件打开数
noproc 代表最大进程数
限制进程
Syntax: worker_rlimit_nofile number;
Default: -
Context: main
限制一个 worker 进程最大能打开的文件句柄数。
活动连接数查看
ss -n | grep ESTAB | wc -l
Tcp Fast Open - TFO
net.ipv4_tcp_fastopen
需 Client、Server 两端均支持 TFO。
- 0:关闭
- 1:作为客户端时可以使用TFO
- 2:作为服务端时可以使用TFO
- 3:无论作为客户端还是服务端,都可以使用TFO
Syntax: listen address[:port] [fastopen=number];
Default: listen *:80 | *:8000;
Context: server
fastopen=number
为防止带数据的 SYN 攻击,限制最大长度,指定 TFO 连接队列的最大长度。
worker 进程最大连接数量
包括 Nginx 与上游、下游间的连接。
Syntax: worker_connections numbers;
Default: worker_connections 512;
Context: events