# 系统所有进程一共可以打开的文件数量, 每个套接字也占用一个文件描述字 fs.file-max=1491124 # 增大内核 backlog 参数,使得系统能够保持更多的尚未完成 TCP 三次握手的套接字。 net.core.somaxconn=1048576 net.core.netdev_max_backlog=1048576 net.ipv4.tcp_max_syn_backlog=1048576 # 增大应用程序可用端口范围。 net.ipv4.ip_local_port_range=1024 65000 net.ipv4.ip_local_reserved_ports=3000,3306,6379,27017,27018 # 系统中最多有多少个 TCP 套接字不被关联到任何一个用户文件句柄上 net.ipv4.tcp_max_orphans=131072 # 启用 TIME_WAIT 复用,使得结束 TIEM_WAIT 状态的套接字的端口可以立刻被其他套接字使用。 在只有 60000 多个端口可用的情况下,配置如下 net.ipv4.tcp_tw_reuse=1 net.ipv4.tcp_max_tw_buckets=55000 # 优化 nf_conntrack 参数,防止服务器在大量短链接场景下出现丢包 net.nf_conntrack_max=1048576 net.netfilter.nf_conntrack_max=1048576 net.netfilter.nf_conntrack_tcp_timeout_fin_wait=30 net.netfilter.nf_conntrack_tcp_timeout_time_wait=30 net.netfilter.nf_conntrack_tcp_timeout_close_wait=15 net.netfilter.nf_conntrack_tcp_timeout_established=300 # 缩短套接字处于 TIME_WAIT 的时间, 60s -> 15s net.ipv4.tcp_fin_timeout=15 # 减小 tcp keepalive 探测次数,可以即时释放长链接 net.ipv4.tcp_keepalive_probes=3 # 缩短 tcp keepalive 探测间隔时间,同上 net.ipv4.tcp_keepalive_intvl=15 # 修改 tcp keepalive 默认超时时间 net.ipv4.tcp_keepalive_time=7200 # 关闭慢启动重启(Slow-Start Restart), SSR 对于会出现突发空闲的长周期 TLS 连接有很大的负面影响 net.ipv4.tcp_slow_start_after_idle=0 # 启用 MTU 探测,在链路上存在 ICMP 黑洞时候有用(大多数情况是这样) net.ipv4.tcp_mtu_probing=1 # 打开内核的 SYN Cookie 功能,可以防止部分 DOS 攻击。 net.ipv4.tcp_syncookies=1 # 当某个节点可用内存不足时, 系统会倾向于从其他节点分配内存。对 Mongo/Redis 类 cache 服务器友好 vm.zone_reclaim_mode=0 # 当内存使用率不足10%(默认值60%)时使用 swap,尽量避免使用 swap,减少唤醒软中断进程 vm.swappiness=10 # 内核执行无内存过量使用处理。使用这个设置会增大内存超载的可能性,但也可以增强大量使用内存任务 Mongo/Redis 的性能。 vm.overcommit_memory=1 # 指定 fair queue 算法, 为了配合 google bbr 算法,否则会产生 hrtimer 的时钟中断的开销 net.core.default_qdisc=fq # 使用 google bbr 拥塞控制算法。 net.ipv4.tcp_congestion_control=bbr # 优化 http2 性能, https://blog.cloudflare.com/http-2-prioritization-with-nginx/ # net.ipv4.tcp_notsent_lowat = 16384 # 启用 ip forwarding #net.ipv4.ip_forward=1 #net.ipv4.conf.enp0s6.route_localnet=1 # 启用 tcp fast open # net.ipv4.tcp_fastopen=3 # 禁用 ipv6 # net.ipv6.conf.all.disable_ipv6=1 # net.ipv6.conf.default.disable_ipv6=1 # net.ipv6.conf.lo.disable_ipv6=1 # 增加初始拥塞窗口和滑动窗口,提高 Proxy 业务性能 # see https://www.cdnplanet.com/blog/initcwnd-settings-major-cdn-providers/ # sudo ip route change $(ip route show|grep '^default'|head -1) initcwnd 10 initrwnd 25 # 增加当前服务器进程的文件打开数目,解决 too many open files 错误 # sudo ss -anptl | grep -oP 'pid=\K[0-9]+' | xargs -i sudo prlimit --pid {} --nofile=1048576 # 永久增加文件打开数目,解决 too many open files 错误,需要重启系统生效 # curl https://phus.lu/sysctl.conf | sudo tee /etc/sysctl.d/10-phuslu.conf && echo -e "* soft nofile 1048576\n* hard nofile 1048576\n* soft nproc 10240\n* hard nproc 10240\n" | sudo tee /etc/security/limits.d/99-phuslu.conf