1.1 硬件与权限:确认你有服务器root权限或等效sudo权限;确认网卡型号(ethtool -i eth0)、内核版本(uname -r)与虚拟化类型(virt-what)。
1.2 备份与变更控制:在修改配置前备份 /etc/sysctl.conf、/etc/security/limits.conf、nginx/mysql 配置文件;记录每一步变更以便回滚。
1.3 安全注意:在生产环境逐步实施,优先在预发布/单节点上验证配置,避免一次性全量上线导致不可用。
2.1 带宽与延迟:在越南与目标节点分别跑 iperf3(服务器端 iperf3 -s,客户端 iperf3 -c x.x.x.x -P 10 -t 60),记录吞吐峰值与抖动。
2.2 路由与丢包:使用 mtr -rwzbc100 目标IP 和 traceroute -n 目标IP,分析丢包出现的跃点与时延突增点,为后续与运营商沟通提供依据。
2.3 应用场景测试:用wrk/ab 对HTTP场景压测(wrk -t4 -c200 -d60 http://ip/),记录连接数、QPS、响应时间分布。
3.1 打开文件并修改:编辑 /etc/sysctl.conf,追加或调整以下参数(写入后sysctl -p应用):
net.core.rmem_max = 67108864 net.core.wmem_max = 67108864 net.ipv4.tcp_rmem = 4096 87380 67108864 net.ipv4.tcp_wmem = 4096 65536 67108864 net.core.netdev_max_backlog = 250000 net.ipv4.tcp_congestion_control = bbr
3.2 启用BBR(若内核支持):sysctl net.ipv4.tcp_congestion_control=bbr;检查 lsmod | grep bbr 或 tc qdisc show dev eth0。若内核不支持,升级到较新内核(4.9+)或使用官方内核包。
3.3 连接与端口:增大 somaxconn 与 backlog、降低 FIN_TIMEOUT:net.core.somaxconn=65535 net.ipv4.tcp_max_syn_backlog=65535 net.ipv4.tcp_fin_timeout=15
4.1 查看中断分布:cat /proc/interrupts | grep eth0,识别网卡中断号。
4.2 启用并配置 irqbalance:yum/apt 安装 irqbalance 并启动(systemctl enable --now irqbalance)。对于高性能需求,固定中断到CPU核:echo 2 > /proc/irq/NNN/smp_affinity(NNN为中断号,2为位掩码),或使用 irqpinning 脚本。
4.3 配置RSS/队列:若网卡支持多队列,使用 ethtool -L eth0 combined 8 来设置队列数,并用 ethtool -S 查看统计。
5.1 检查与更新驱动:ethtool -i eth0 查看驱动及固件,必要时更新到厂商推荐版本。
5.2 调整 offloading:在高TPS场景尝试开启/关闭 GRO/TSO/SG:ethtool -K eth0 grotso on/off 等,通常开启能降低CPU但在某些虚拟化环境会引入延迟,需通过测试判定。
5.3 设置链路参数:ethtool -s eth0 speed 1000 duplex full autoneg on;并确保实际链路协商正确。
6.1 判断最佳MTU:通常将MTU设置为1500或更大(jumbo 9000)可提高吞吐。先测试路径是否支持大MTU:ping -M do -s 8972 目标IP(调整大小),如果通过则可设置 MTU 9000。
6.2 修改MTU生效:ip link set dev eth0 mtu 9000;并在网络设备与交换机侧确认支持。注意:跨互联网路径不一定支持jumbo,需谨慎在公网使用。
7.1 ulimit 与文件句柄:编辑 /etc/security/limits.conf 添加* soft nofile 200000 * hard nofile 200000,并在 systemd 服务文件中设置 LimitNOFILE=200000,然后重启服务。
7.2 Nginx 配置示例:worker_processes auto; worker_connections 65536; keepalive_timeout 15; tcp_nopush on; tcp_nodelay on; 使用 sendfile on。重载配置并通过 ab/wrk 验证。
7.3 数据库连接池:若应用依赖数据库,使用连接池限制并设置超时时间,避免大量短连接耗尽资源。
问:如何持续发现并定位越南 CN2 线路的网络瓶颈和突发丢包?
答:部署主动监控与告警:1) 使用 Prometheus + node_exporter + blackbox_exporter 定期采集 ping/HTTP/iperf 指标;2) 使用流量采样(ntopng/sflow)观察流量突变;3) 定时跑 mtr 脚本记录每小时的丢包与时延,出现异常立即抓包(tcpdump -i eth0 host x.x.x.x -w dump.pcap)供分析与运营商沟通。
问:完成以上优化后,怎么证明吞吐和响应确实提升了?
答:对比前后基线数据:1) 重复第2节的 iperf3、mtr、wrk 场景,记录平均值与P95、P99;2) 使用 tcptraceroute 和抓包看重传/重排序减少;3) 观察 CPU 利用率下降或吞吐明显上升,并记录生产QPS与延迟曲线变化,确保在真实流量下无副作用。
问:如果优化上线后出现异常或性能下降,应该怎么回退与排查?
答:回退步骤与排查要点:1) 立即执行变更回滚脚本(恢复备份的 /etc/sysctl.conf、ethtool 设置、nginx 配置、重启服务);2) 查看系统日志(dmesg/syslog)与网卡错误统计(ethtool -S);3) 对照变更记录逐项还原并逐步启用单一优化项复测,定位问题来源;4) 若为链路问题,及时与运营商提供 mtr/traceroute 报告沟通。保持变更小步快跑原则,便于快速回退与定位。