1.
总体优化思路与指标定义
- 明确目标:将并发连接数从默认的几百优化到数千或上万,目标响应时延<200ms。
- 核心指标:并发会话数、每秒连接建立数(CPS)、平均会话时长、CPU/内存/网络利用率。
- 测试工具:使用autobench、wrk、ssh-bench或自研脚本模拟并发,记录连接成功率与延迟分布。
- 优先级排序:先保证网络与内核参数,再调整sshd与堡垒机应用,最后优化日志与审计。
- 风险控制:分阶段发布,AB测试,监控异常(SYN-ACK丢包、TIME_WAIT积压、文件描述符耗尽)。
2.
内核网络与文件描述符调优
- 增大文件描述符:ulimit -n 200000;在systemd服务单元中设置LimitNOFILE=200000。
- TCP参数调整(/etc/sysctl.conf):net.core.somaxconn=65535、net.ipv4.tcp_max_syn_backlog=40960。
- 缩短TIME_WAIT:net.ipv4.tcp_tw_reuse=1,net.ipv4.tcp_fin_timeout=30。
- 临时端口范围与端口消耗:net.ipv4.ip_local_port_range="10240 65535";减少端口耗尽概率。
- 网卡与中断优化:启用RSS/分散中断,调整tx/rx环大小 ethtool -G eth0 rx 4096 tx 4096,绑定中断到多核。
3.
sshd与堡垒机应用级参数调优
- 限制与允许并发:sshd_config中设置MaxStartups 100:30:200(示例),MaxSessions 50以控制资源分配。
- 禁用耗时认证模块:UseDNS no、GSSAPIAuthentication no,减少反向DNS和GSSAPI超时。
- KeepAlive与空闲断开:ClientAliveInterval 60、ClientAliveCountMax 3,平衡长连接与资源释放。
- 会话复用:推广SSH multiplexing(ControlMaster)或使用sftp代理池减少新连接开销。
- 日志与审计:异步写入或使用队列(如rsyslog->Kafka),避免同步阻塞影响连接速度。
4.
并发连接模型与实践示例
- 模型选择:事件驱动(epoll)优于线程/进程模型,sash应使用异步IO或goroutine轻量线程。
- 连接池策略:对后端主机使用连接复用池,例如每台目标主机保留50个持久连接。
- 真实案例:某电商公司A,在双机热备架构下,通过以上调优,将并发会话从1200提升至8000,95百分位延迟从450ms降至160ms。
- 资源配置举例:测试节点配置:CPU 16核、内存32GB、带宽1Gbps,内核参数如表格所示。
- 监控要点:监控fd使用率、netstat -nat | grep TIME_WAIT | wc -l、ss -s以及CPU syscall比率。
5.
性能数据表(示例)
| 项 |
调优前 |
调优后 |
| 最大并发会话 |
1,200 |
8,000 |
| 95% 延迟 |
450ms |
160ms |
| 文件描述符上限 |
32,768 |
200,000 |
| net.core.somaxconn |
128 |
65,535 |
| 带宽利用率 |
60% |
85% |
6.
针对VPS/主机/CDN和DDoS防御的建议
- VPS资源受限:优先使用轻量级守护进程、减少内存拷贝、启用压缩与流控,避免每连接大内存占用。
- 与CDN配合:将静态下载与大文件通过CDN或专线转发,减少堡垒机带宽与连接压力。
- DDoS防护:配置流量清洗或上游防护,启用SYN cookies(net.ipv4.tcp_syncookies=1),并在防火墙做速率限制。
- 分层架构:前置多个sash实例做负载均衡(TLS/SSH代理层),后端按业务分片,避免单点过载。
- 演练与回滚:在低峰期进行大规模连接压测并演练自动伸缩与应急脚本,记录回滚步骤与速率控制阈值。
来源:堡垒机 sash性能优化技巧与并发连接调优建议