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 QUEUEnet.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 QUEUEnet.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