优化方法论

image.png

cpu

增大 nginx 使用 cpu 有效时长

image.png

  • worker_processes 指令

image.png

  • 减少进程切换
  • 增大进程优先级
  • 绑定 cpu
  • 延迟处理新连接

多核间负载均衡

worker 间均衡

image.png

缓存命中率

  • worker_cpu_affinity

image.png

NUMA 架构

image.png

tcp

image.png

syn_sent

image.png

syn_rcvd

image.png

image.png

image.png

tcp_syncookies

image.png

文件描述符上限

image.png

worker 进程最大连接数量

  • worker_connections

两个队列长度

image.png

tcp fast open

image.png

image.png

滑动窗口

image.png

image.png

发送 tcp 消息

image.png

接收 tcp 消息

image.png

发生 cs

image.png

重传

image.png

缓冲区

image.png

image.png

BDP

  • bdp = 带宽 x 时延
  • 吞吐量 = 窗口 / 时延

image.png

nagle 算法

image.png

  • postpone_output

cork 算法

image.png

流量控制

image.png

image.png

RTT, RTO

image.png

keepalive

image.png

关闭连接

image.png

image.png

image.png

tcp_tw_reuse

image.png

tcp_tw_recycle = 0

image.png

lingering_close 延迟关闭

image.png

  • 避免发送 rst

image.png

tls 优化

image.png

image.png

http 长连接

image.png

使用 http2

磁盘 io

image.png

减少磁盘 io

image.png

直接 io

image.png

  • 大文件, 直接 io

image.png

异步 io

image.png

image.png

异步读 io 线程池

image.png

image.png

异步 io 中的缓存

image.png

减少磁盘读写次数

  • empty_gif 模块

image.png

access 日志压缩

  • access_log 指令

error.log 日志输出内存

syslog 协议

image.png

sendfile 零拷贝

image.png

tcmalloc

image.png

stub_status 模块监控 nginx

image.png