带宽瓶颈?延迟高?从这几个点入手
公司官网打开慢,后台接口经常超时,用户投诉增多——这些多半不是前端的问题,根源可能在服务器网络配置上。很多人一上来就想着升级带宽、换服务器,其实很多问题通过合理的优化就能缓解甚至解决。
合理调整TCP参数提升传输效率
Linux服务器默认的TCP缓冲区大小往往偏保守,面对高并发或跨区域访问时容易成为瓶颈。比如可以适当调大接收和发送缓冲区:
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728修改后执行 sysctl -p 生效。这对视频流、大文件下载类服务尤其有用,能明显减少卡顿。
启用BBR拥塞控制算法
传统CUBIC算法在高延迟链路上表现一般,而Google推出的BBR能更有效地利用带宽。查看当前算法:
sysctl net.ipv4.tcp_congestion_control如果输出不是bbr,可以通过以下命令开启:
sysctl -w net.ipv4.tcp_congestion_control=bbr
sysctl -w net.ipv4.tcp_low_latency=1重启后检查是否生效,你会发现跨省或跨境访问的响应速度有改善。
CDN不只是加速静态资源
很多人以为CDN只能缓存图片、JS、CSS,其实现在很多CDN支持动态加速。比如把API接口走动态回源,利用CDN节点就近接入的特性,降低用户到源站的物理距离。某电商平台在双十一流量高峰前上了动态加速,原本平均300ms的接口延迟压到了120ms左右。
限制单IP连接数防异常流量冲击
一台服务器能承受的并发连接有限,某些爬虫或恶意扫描会耗尽连接资源。用iptables限制单个IP的最大连接数:
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT这个规则限制每个IP最多50个并发连接,防止被占满。可以根据业务调整阈值,比如论坛类站点可适当放宽。
DNS解析别忽视
服务器反向解析(PTR)没配好,或者应用依赖的第三方API域名解析慢,都会拖累整体响应。建议将常用外部域名做本地Host绑定,或者部署内网DNS缓存服务。曾经有个项目接口总超时,排查发现是调用的短信服务商DNS偶尔抽风,加了缓存后稳定性大幅提升。
日志监控要跟上
优化不是一劳永逸的事。用iftop看实时流量分布,用tcpdump抓包分析异常连接,配合Zabbix或Prometheus记录历史数据。某次凌晨报警显示带宽跑满,通过iftop发现是某个备份任务没限速,及时调整策略避免了次日白天业务受影响。