流量耗费1TB云成本千元的一则性能优化案例
Contents
一 项目背景
近期查看华为云账单消费时,发现有些异常的带宽流浪费用:

从费用上看,发现是上行流量,觉得奇怪。补充项目信息,应用部署在华为云,数据流向图:Client–>DNS–>华为云WAF–>华为云ELB–>转发至后端ECS–>返回给ELB–>返回给WAF–>Client。
二分析思路和原因
1 通过资源ID定位到流量消耗在ELB
登录华为云控制台,进入EIP弹性公网管理界面,通过带宽ID:8f248608-90a2-4175-b07e-70006da2b93b定位到对应的ELB。
2 通过ELB查看后端服务器组
进入ELB界面,查看后端服务器组,定位到后端服务器有5台,分别是几个不同的项目。
3 控制台查看机器流量
逐一对每台机器流量进行排查,的确发现有一台ECS机器流量异常。

4 查看NGINX日志
通过goaccess工具分析应用系统的NGINX请求日志,发现有对一个js文件的流量请求达到惊人的1.1TB。

5 统计NGINX访问最多的前10个URL地址
进一步分析,查看NGINX请求,发现访问比较多的URL资源:
awk '{print $7}' qyxyd.log | sort|uniq -c| sort -rn| head -10 | more root@xmxyd-17xx:/etc/nginx/logs# awk '{print $7}' qyxyd.log | sort|uniq -c| sort -rn| head -10 | more 674633 / 672633 /home 652434 /_nuxt/js/vendors/app.1751528723734.js 652386 /_nuxt/js/pages/home/index.1751528723734.js 652230 /_nuxt/js/pages/credit_institution/index/pages/financial_institution/index/pages/financial_shop/index/pages/ho/245b0134.1751528723734.js 652225 /_nuxt/js/app.1751528723734.js 652124 /_nuxt/img/left_arrow.0c6667f.png 652083 /_nuxt/img/newYear1.fc48a87.jpeg 652054 /_nuxt/js/runtime.1751528723734.js 652029 /_nuxt/img/bar-sort.0c296c8.png root@xmxyd-17xx:/etc/nginx/logs#
6 查看这个js文件究竟是啥
Chrome浏览器,控制台,查看js,发现压缩之后1.8Mb,原始文件更是有7Mb多。加载耗时2.66秒。

7 寻求开发同事介入支持
寻求开发同事支持,查看该js文件里有大量的json文件,查看源代码,原来是全国各市区县的地图json文件,一共有300多个,平均每个文件几十个kb,全部打包到该js文件里了,不大才怪呢。经过分析,访问该站点时,只需要加载该项目所在市区的地图就行,根本不需要把全国各市区县的地图json文件全部打包到该js文件里。
三 解决问题
1 优化代码
优化之后,上测试环境,测试同事验证没问题,发布到生产环境。

可以看到,生产环境该js文件压缩之后,原文件大小从7777kb降低到只有115kb,”瘦身”了7777/115=67倍多。压缩之后,也从1804kb降低到只有43kb,“瘦身”了1804/43=41.953 倍。
四 复盘总结
一个小小的js文件,造成流量请求1.1TB,成本千元。
系统性能优化都在细节里,代码里装的都是细节。
感谢身边几位同事的协助分析支持。周末愉快。今天2025年8月29日,农历七月初七,牛郎织女将在今晚跨越那条银河。想起儿时暑假的夜空,长辈们讲述这个美好爱情故事的场景……