最近由于服务器跑的任务量多了,对数据库的查询也多了,网站突然变的很慢。
使用的是腾讯云低配服务器,担心可能是数据库负载太高,又或者是被攻击了。
最近经过排查,发现腾讯云后台显示带宽一直是打满的,我关掉自己发服务就马上缓解,于是基本判断是自身服务问题,导致带宽流量打满。

但自己评估,服务访问人数很少,不至于打满。开始和AI 一起排查。
# 实时监控带宽(按流量排序) sudo iftop -P -i eth0

发现了大量来自我自己的流量。
流量集中在这一个 IP 上,而且带宽累计已经达到了:
-
TX (上传):60.7MB
-
RX (下载):2.01MB
- 总流量:62.7MB
当前实时速率显示上传速率接近 9.3Mb(即大约 1MB/s 左右),可能是你带宽上限附近,尤其如果你的带宽是 10Mbps 左右的小型 VPS。
后来我意识到VM-4-12-ubuntu:27027 和 111.201.131.102 是在同一台服务器上的服务,为什么还计算公网流量?
原因在于我 mongodb://xxx.xx.xx.xx:27027
,使用了公网 IP。
系统会认为我在访问一台「外部主机」;
实际上流量会通过外部网卡(比如 eth0),形成一个**”NAT 回环”**(外出再回来的包);
云服务商和我的网卡都看到了上传/下载数据,自然计入了公网 TX/RX 流量;
也就导致了我现在的 带宽被吃满、网速变慢 的情况。
修改方法也很简单,在服务器上使用127.0.0.1。为了在本地使用公网ip 连接,可以
const os = require('os'); const hostname = os.hostname(); const isTencentCloud = hostname.includes('VM-') || hostname.includes('tencent'); const mongoUri = isTencentCloud ? 'mongodb://127.0.0.1:27017' : 'mongodb://xxx.xxx.xxx.xxx:27017';
