1.
概述与准备工作
- 目标:保证香港原生IP代理在每秒数千到数万并发连接下稳定且延迟低。
- 前提:有可控的服务器(Linux)、PCIe网卡、可变更内核参数权限、代理软件(如nginx+stream、haproxy、3proxy)和测试机。
- 准备命令:ssh到服务器,记下当前配置:sysctl -a | grep net.ipv4 && ulimit -n。
2.
提升文件描述符与进程限制
- 临时提高:ulimit -n 200000 && ulimit -Sn 200000。
- 永久修改:编辑 /etc/security/limits.conf,加入:* soft nofile 200000 和 * hard nofile 200000。
- systemd 服务:在对应的.service 文件中加入 LimitNOFILE=200000,重载 systemctl daemon-reload 并 restart 服务。
3.
内核网络参数(TCP/IP)优化
- 建议 sysctl 配置(加入 /etc/sysctl.d/99-net.conf):
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 300000
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 10000 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_tw_buckets = 2000000
- 应用:sysctl --system。实际场景可先小幅调参再逐步增大。
4.
Socket层与多核优化(SO_REUSEPORT / accept 策略)
- 使用 SO_REUSEPORT:让每个 CPU 核心运行独立的进程/线程监听同一端口,减少内核锁争用。
- Nginx 示例(stream)中设置 worker_processes auto 与 listen ... reuseport:
stream { server { listen 80 reuseport; proxy_pass backend; } }。
- 对于 haproxy 使用 nbthread 与 cpu-map 做 CPU 亲和。
5.
网卡与中断调优(NIC、RSS、offload)
- 关闭/开启 offload:ethtool -K eth0 gro off gso off tso off(在某些场景关闭可降低延迟)。
- 设置中断亲和(IRQ affinity):使用 irqbalance 或手动 echo cpumask > /proc/irq/
/smp_affinity。
- 启用或调整 RSS/Receive queues:ethtool -l/ -L 查看并设置队列数,确保队列数和 CPU 核心匹配。
6.
代理软件配置与连接池策略
- 使用事件驱动且支持 keepalive 的代理(nginx stream、haproxy、3proxy)并开启长连接池。
- Nginx 调优示例:worker_connections 65536;worker_rlimit_nofile 200000;keepalive_timeout 15;proxy_connect_timeout 3s。
- 对外连接复用:对上游服务器使用 keepalive 或连接池,减少 TCP 建立开销。
7.
负载均衡与水平扩展
- 在流量高峰期采用多机集群 + L4 负载均衡(如 LVS、MetalLB)或前端独立 HAProxy 做 TCP 层均衡。
- 为避免单点:将香港原生IP分布到多台代理服务器,使用任意一致性哈希或轮询分配出站IP。
- 自动扩缩容:结合业务监控(连接数阈值)自动弹性增加实例。
8.
压力测试与监控落地
- 压测工具:wrk、wrk2(HTTP),tsung(长期并发),iperf3(带宽),netperf。示例:wrk -t8 -c20000 -d60 http://ip:port/。
- 监控指标:tcp connections(ss -s)、established、retransmits(/proc/net/snmp)、CPU、内存、RX/TX drop、ifconfig。
- 告警:设置阈值(例如 TCP retransmit > 1% 或 established 过高)并触发自动化动作。
9.
常见问题与逐项排查顺序
- 若连接被拒或延迟高:检查 ulimit、somaxconn、backlog 与应用日志;查看 SYN 洪泛(ss -s)。
- 若大量 TIME_WAIT:启用 tcp_tw_reuse、缩短 tcp_fin_timeout、考虑 SO_REUSEPORT 与长连接复用。
- 若丢包或中断高:检查网卡驱动、offload 设置、RSS 队列与 IRQ 绑定。
10.
问:在香港原生IP代理上,哪个调参最先做且收益最大?
- 答:优先提升文件描述符与 worker_connections(ulimit 与 nginx/haproxy 配置),然后启用 SO_REUSEPORT 与调整 net.core.somaxconn,因为这些能立竿见影地提升并发接入能力。
11.
问:如何安全地做线上参数变更,避免服务中断?
- 答:先在灰度机或压测环境验证,再分批滚动更新:调整 sysctl 可用 sysctl -w 临时生效,确认后写入 /etc/sysctl.d 并逐台重启服务;对 systemd 服务调整 LimitNOFILE 并 reload 单台验证。
12.
问:针对香港链路的线路特殊性,有哪些注意点?
- 答:关注上游运营商的端口限制与连接速率,避免单IP短时间内发起大量新连接导致被ISP限速或封禁;采用连接复用、IP轮换与熔断策略,结合监控快速发现异常并回退。
来源:优化技巧香港原生 IP 的代理在高并发场景下的性能调优