TCP三次握手四次挥手
系统层的优化,主动建立连接时的重试次数
net.ipv4.tcp_syn_retries = 6
建立连接时本地端口可用范围;手动可以tiaoz
net.ipv4.ip_local_port_range = 32768 60999
应用层建立连接超时时间
Syntax: proxy_connect_timeout time; Default: proxy_connect_timeout 60s; Context: http, server, location Syntax: proxy_connect_timeout time; Default: proxy_connect_timeout 60s; Context: stream, server
系统级别调整半连接的最大数量
net.ipv4.tcp_max_syn_backlog # SYN_RCVD状态连接的最大个数 net.ipv4.tcp_synack_retries #被动建立连接超时重试次数
服务器处理三次握手
如何应对SYN 攻击
攻击者短时间伪造不同IP地址的SYN报文,快速占满backlog队列,是服务器不能正常为用户提供服务
文件句柄数的上限
操作系统的全局设置
fs.file-max 操作系统可使用的最大句柄数 使用fs.file -nr 可以查看当前已分配、正在使用 、上限 设置限制用户 /etc/security/limits.conf root soft nofile 65535 root hard nofile 65535 限制进程 Syntax: worker_rlimit_nofile number; Default: — Context: main
设置worker进程最大并发连接数
Syntax: worker_connections number; Default: worker_connections 512; Context: events
TCPFast Open
系统层打开
net.ipv4.tcp_fastopen 0 :关闭 1 :作为客户端是可以使用 2:作为服务端是可以使用 3 :客户端服务端都可以使用
nginx进程里的配置
Syntax: listen address[:port] [fastopen=number]; Default: listen *:80 | *:8000; Context: server fastopen=number 为防止带数据的SYN共击,限制最大长度,指定TFO队列最大长度
滑动窗口
TCP发送消息
TCP 接收消息
nginx接收body接收读操作两次超时设置
Syntax: client_body_timeout time; Default: client_body_timeout 60s; Context: http, server, location
nginx两次写操作超时设置
Syntax: send_timeout time; Default: send_timeout 60s; Context: http, server, location
以上四层读写超时指令
Syntax: proxy_timeout timeout; Default: proxy_timeout 10m; Context: stream, server
吞吐量优先启用Nagle算法
tcp_nodelay off 启用
低时延优先禁用
tcp_nodelay on 关闭
指令介绍
Syntax: tcp_nodelay on | off; Default: tcp_nodelay on; Context: http, server, location
四层的指令
Syntax: tcp_nodelay on | off; Default: tcp_nodelay on; Context: stream, server
nginx配置避免发送小报文
Syntax: postpone_output size; Default: postpone_output 1460; Context: http, server, location
TCP的keeplive
功能介绍:检测实际断掉的连接;用于维护与客户端之间的防火墙有活跃网络包
系统层面的控制
Syntax: lingering_close off | on | always; Default: lingering_close on; Context: http, server, location off : 关闭 on: 由nginx判断,动用户请求未完成时启用功能,否则及时关闭连接 always:无条件启用该功能 Syntax: lingering_time time; Default: lingering_time 30s; Context: http, server, location 当该功能启用时,最长的读取用户请求内容的时长,达到后立即关闭连接 Syntax: lingering_timeout time; Default: lingering_timeout 5s; Context: http, server, location 启用该功能时,检测客户端是否仍然请求内容到达,若超时后没有请求数据,则立刻断开
当其他读写超时指令生效引发连接关闭时,通过发送RST立刻释放断开,内存等资源
Syntax: reset_timedout_connection on | off; Default: reset_timedout_connection off; Context: http, server, location
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nginx 网络层的优化 - Python技术站