网站访问变卡,打开网页反应变慢。查看阿里云CPU,内存,负载各项指标都正常,也无攻击。七牛云缓存命中率99.61%。阿里云带宽15M,入带宽基本在3M内,出带宽高峰时期超出20M。公网流出带宽使用率接近110%。
菜单查看:监控与管理
、云监控
、网络监控大盘
nginx请求日志
客户端请求IP
-
-
访问时间及时区
请求方法
请求url
请求协议
请求返回状态码 ``返回字节
referer
请求设备的信息
1 | 47.xx.xx.xx - - [30/Mar/2021:15:53:05 +0800] "GET /favicon.ico HTTP/1.1" 200 35764 "https://new.xxx.com/product" "Mozilla/5.0 (Linux; Android 10; LIO-AL00 Build/HUAWEILIO-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045521 Mobile Safari/537.36 MMWEBID/5122 MicroMessenger/8.0.2.1860(0x28000235) Process/tools WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64" |
出带宽超问题排查:
开始怀疑是日志文件太大,写入耗时太久。定时脚本开的太多,执行频率太高。逐一排查都不是。正常来说30多W的用户量,8核CPU,16G内存,15M带宽,静态资源走cdn,不常更新数据redis缓存。应该够了。为了解燃眉之急先升级带宽到25M。阿里云升级带宽,付费后刷新,无需重启服务器。
下载网站访问日志
/www/wwwlogs/new.xxx.com.log
至本地,筛选出带宽高的时间段日志分析
1 | set_time_limit(0); |
统计日志带宽流量出总大小
1 | set_time_limit(0); |
日志入库方便统计, 读一条插入一条,效率太慢。组成sql写入文件。导入数据库效率高些。
1 | set_time_limit(0); |
日志表结构:
1 | CREATE TABLE `logs` ( |
导入数据后,使用sql查询最耗流量的请求和次数。查询排行榜上还有许多静态资源没走
CDN
走的网站域名,看来代码中cdn
调用有遗漏。 把排名靠前的几个代码中改掉。出带宽问题有所下降!
域名https://new.xxx.com
,cdn域名https://cdn.xxx.com
1 | SELECT ROUND((sum(len)/1024/1024),2) as size,api,count(id) total FROM `logs` |
api(请求url ) |
size(单个接口请求总大小,单位兆 ) |
total(请求次数 ) |
---|---|---|
/api/product |
3327.30M |
56130次 |
/new_app.apk |
666.06M |
1012次 |
/favicon.ico |
292.92M |
9722次 |
/api/product |
3327.30M |
56130次 |
... |
...M |
...次 |
数据库字段
text
内容里的图片也替换成cdn地址:str_replace('src="/uploads/','src="'.config("app.cdn_host").'/uploads/',$content);
带宽略有下降,依然很高。查看首页源码发现,vue
打包后的代码,引用的静态资源js
、css
、img
走的还是网站域名。重新打包前端代码改成走cdn
模式,出带宽直线下降!之前出带宽20M都打满,入带宽3M左右,公网流出带宽使用率110%。现在出带宽5M以下,入带宽3M以下,公网流出带宽使用率15%以下。
问题排查,日志很重要,最后排查出来的问题却是意想之外的,原来还以为七牛云cdn命中率99.61%肯定不是这个问题。最后发现千里之堤毁于蚁穴的这个蚂蚁窝还是它!
本人声明: 此文只作为自己日后工作学习中遇到类似问题方便快速回忆解决问题的笔记,仅供参考!
版权声明: 本文首发于 すせなの筆記 转载无需联系本人,但要注明来源本站!