服务器流量监控与性能优化实战
本文是一份服务器流量监控与性能优化的实战指南,从基础概念到生产环境应用全面解析。主要内容包括: 流量基础概念:详细讲解网络流量的物理本质(OSI七层模型、数据包结构)、计量单位换算(存储与传输单位区别)以及带宽规格对照表。特别强调协议开销对小文件传输的影响可达30%以上。 流量特征分析:通过业务类型对比表展示不同服务器(Web、下载站、API等)的上下行流量比例特征,并以实际Web服务器数据为例进
服务器流量监控与性能优化实战指南:从原理到生产环境全方位解析
基于真实生产环境的深度技术文档,涵盖流量监测、异常诊断、带宽优化、安全防御四大核心模块
文章目录
一、流量基础概念详解
1.1 网络流量的物理本质
网络流量本质上是数据包在网络介质中的传输。理解这一点需要从 OSI 七层模型说起:
应用层 (HTTP/FTP/SMTP) → 产生业务数据
↓
传输层 (TCP/UDP) → 分段、端口标识
↓
网络层 (IP) → 路由、寻址
↓
数据链路层 (Ethernet) → 帧封装、MAC 地址
↓
物理层 (电缆/光纤) → 比特流传输
每一次网络请求的流量构成:
┌─────────────────────────────────────────────────┐
│ 完整数据包结构 │
├─────────────────────────────────────────────────┤
│ 以太网头 (14 字节) │ IP 头 (20 字节) │ TCP 头 (20 字节) │ 应用数据 │
└─────────────────────────────────────────────────┘
↓
协议开销约 54 字节/包
重要提示:实际传输流量 = 应用数据 + 协议开销。小文件传输时,协议开销占比可达 30% 以上。
1.2 流量计量单位深度解析
1.2.1 存储单位 vs 传输单位
| 场景 | 单位 | 符号 | 换算基准 | 示例 |
|---|---|---|---|---|
| 数据存储 | Byte | B | 1024 进制 | 文件大小 5MB |
| 网络传输 | bit | b | 1000 进制 | 带宽 100Mbps |
换算公式:
带宽 (Mbps) → 实际速度 (MB/s)
100 Mbps ÷ 8 = 12.5 MB/s (理论最大值)
100 Mbps ÷ 8 × 0.85 ≈ 10.6 MB/s (实际可用值,考虑协议开销)
1.2.2 云服务器带宽规格对照表
| 带宽规格 | 理论下行 | 理论上行 | 适用场景 | 月流量估算 |
|---|---|---|---|---|
| 1 Mbps | 128 KB/s | 128 KB/s | 个人博客 | ~30 GB |
| 5 Mbps | 640 KB/s | 640 KB/s | 企业官网 | ~150 GB |
| 10 Mbps | 1.25 MB/s | 1.25 MB/s | 小型电商 | ~300 GB |
| 50 Mbps | 6.25 MB/s | 6.25 MB/s | 中型平台 | ~1.5 TB |
| 100 Mbps | 12.5 MB/s | 12.5 MB/s | 视频/下载站 | ~3 TB |
| 1 Gbps | 125 MB/s | 125 MB/s | 大型数据中心 | ~30 TB |
注意:以上月流量按 80% 带宽利用率、全天满载计算,实际使用通常为 20-40%。
1.3 上行流量与下行流量的业务含义
1.3.1 不同业务类型的流量特征
| 业务类型 | 上行占比 | 下行占比 | 流量特征说明 |
|---|---|---|---|
| Web 服务器 | 70-90% | 10-30% | 响应数据远大于请求数据 |
| 文件下载站 | 85-95% | 5-15% | 几乎全是出站流量 |
| 视频点播 | 90-98% | 2-10% | 视频流大量外发 |
| API 网关 | 60-75% | 25-40% | JSON 响应通常大于请求 |
| 数据库主库 | 55-65% | 35-45% | 数据同步、备份外发 |
| 爬虫服务器 | 15-30% | 70-85% | 大量抓取外部数据 |
| 邮件服务器 | 50-60% | 40-50% | 收发相对均衡 |
| 游戏服务器 | 65-75% | 25-35% | 状态同步、广播消息 |
1.3.2 生产环境数据分析
服务器角色:Web 应用服务器
监测时间:2026-06-07 17:07
网卡:eth0 (主业务网卡)
┌────────────────────────────────────────────────────┐
│ 累计流量统计 │
├────────────────────────────────────────────────────┤
│ 下行 (RX): 20.15 GB (11.9%) ← 用户请求 │
│ 上行 (TX): 147.35 GB (88.1%) → 服务器响应 │
│ 总计:167.50 GB │
└────────────────────────────────────────────────────┘
流量比:TX/RX = 7.31 : 1
业务判断:典型的 Web 服务/内容分发型服务器
深度解读:
- 上行流量占绝对主导(88.1%)- 说明服务器主要对外发送数据
- 流量比 7.3:1 - 符合 Web 应用特征(HTTP 响应通常比请求大 5-10 倍)
- 无 Docker 流量 - docker0 网卡 DOWN 状态,容器服务未运行
- 本地回环流量大(82GB×2)- 说明内部服务间通信频繁
二、Linux 流量监测技术栈
2.1 内核级监测:/proc 文件系统
2.1.1 /proc/net/dev 深度解析
cat /proc/net/dev
完整输出示例:
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 88336624427 164859979 0 0 0 0 0 0 88336624427 164859979 0 0 0 0 0 0
eth0: 21132850892 108723814 0 0 0 0 0 0 158221074309 131260936 0 0 0 0 0 0
字段详解:
| 列名 | 含义 | 正常值 | 异常判断 |
|---|---|---|---|
| bytes | 累计字节数 | 持续增长 | 突增需关注 |
| packets | 累计数据包数 | 持续增长 | - |
| errs | 错误数 | 0 | >0 表示硬件/驱动问题 |
| drop | 丢弃数 | 0 | >0 表示缓冲区满/防火墙丢弃 |
| fifo | FIFO 缓冲错误 | 0 | >0 表示驱动问题 |
| frame | 帧错误 | 0 | >0 表示物理层问题 |
| compressed | 压缩包数 | 通常 0 | - |
| multicast | 多播包数 | 视网络而定 | - |
| colls | 冲突数 | 0 (全双工) | >0 表示网络冲突 |
| carrier | 载波错误 | 0 | >0 表示物理连接问题 |
自动化解析脚本:
#!/bin/bash
# 获取 eth0 实时流量
RX_BYTES=$(cat /sys/class/net/eth0/statistics/rx_bytes)
TX_BYTES=$(cat /sys/class/net/eth0/statistics/tx_bytes)
RX_PACKETS=$(cat /sys/class/net/eth0/statistics/rx_packets)
TX_PACKETS=$(cat /sys/class/net/eth0/statistics/tx_packets)
RX_ERRORS=$(cat /sys/class/net/eth0/statistics/rx_errors)
TX_ERRORS=$(cat /sys/class/net/eth0/statistics/tx_errors)
echo "========== eth0 流量统计 =========="
echo "下行流量:$(echo "scale=2; $RX_BYTES/1024/1024/1024" | bc) GB"
echo "上行流量:$(echo "scale=2; $TX_BYTES/1024/1024/1024" | bc) GB"
echo "下行包数:$RX_PACKETS"
echo "上行包数:$TX_PACKETS"
echo "下行错误:$RX_ERRORS"
echo "上行错误:$TX_ERRORS"
echo "=================================="
2.1.2 /sys/class/net 实时统计
# 实时读取(无缓存,最准确)
cat /sys/class/net/eth0/statistics/rx_bytes # 下行字节
cat /sys/class/net/eth0/statistics/tx_bytes # 上行字节
cat /sys/class/net/eth0/statistics/rx_packets # 下行包数
cat /sys/class/net/eth0/statistics/tx_packets # 上行包数
# 持续监控(每秒刷新)
watch -n 1 'cat /sys/class/net/eth0/statistics/tx_bytes'
2.2 系统级监测:sar 命令(sysstat 包)
2.2.1 安装与配置
# CentOS/Alibaba Cloud Linux
yum install sysstat -y
systemctl enable sysstat
systemctl start sysstat
# Ubuntu/Debian
apt install sysstat -y
# 编辑 /etc/default/sysstat,设置 ENABLED="true"
2.2.2 常用命令详解
# 实时监测(每秒刷新,共 10 次)
sar -n DEV 1 10
# 查看今日历史数据
sar -n DEV
# 查看指定日期数据
sar -n DEV -f /var/log/sa/sa04 # 查看本月 4 日数据
# 查看特定网卡
sar -n DEV 1 5 -i eth0
# 输出详细统计(含错误率)
sar -n EDEV 1 5
2.2.3 输出字段详解
11:07:19 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
11:07:19 PM eth0 17.00 21.00 1.82 21.11 0.00 0.00 0.00 0.00
| 字段 | 含义 | 单位 | 关注阈值 |
|---|---|---|---|
| IFACE | 网卡名称 | - | - |
| rxpck/s | 每秒接收包数 | 包/秒 | >10000 需关注 |
| txpck/s | 每秒发送包数 | 包/秒 | >10000 需关注 |
| rxkB/s | 每秒接收数据 | KB/s | 根据带宽评估 |
| txkB/s | 每秒发送数据 | KB/s | 根据带宽评估 |
| rxcmp/s | 压缩接收包 | 包/秒 | 通常 0 |
| txcmp/s | 压缩发送包 | 包/秒 | 通常 0 |
| rxmcst/s | 多播包 | 包/秒 | 视网络而定 |
| %ifutil | 带宽利用率 | 百分比 | >70% 需扩容 |
2.3 应用级监测:专业流量工具
2.3.1 iftop - 实时流量排行
# 安装
yum install iftop -y # CentOS
apt install iftop -y # Ubuntu
# 基本使用
iftop -i eth0 # 监测 eth0 网卡
iftop -P -n -i eth0 # 显示端口 + 数字 IP
# 过滤特定 IP
iftop -i eth0 -F 192.168.1.0/24
界面解读:
192.168.1.100
0.5KB ▲ │
1.2KB │ ▼
10.0.0.50
- ▲ 表示流入(下行)
- ▼ 表示流出(上行)
- 左侧数字表示流量大小
2.3.2 nethogs - 按进程统计流量
# 安装
yum install nethogs -y
apt install nethogs -y
# 使用
nethogs eth0 # 按进程显示流量
nethogs -t eth0 # 文本模式(适合脚本)
nethogs -v 2 eth0 # 显示累计流量
输出示例:
PID USER PROGRAM DEV SENT RECEIVED
1234 nginx nginx: worker process eth0 15.2 KB 128.5 KB
5678 mysql mysqld eth0 8.1 KB 45.3 KB
2.3.3 vnstat - 流量历史记录
# 安装并初始化
yum install vnstat -y
vnstat -u -i eth0 # 初始化 eth0 网卡统计
# 查看统计
vnstat # 汇总统计
vnstat -l # 实时模式
vnstat -d # 按日统计
vnstat -m # 按月统计
vnstat -h # 按小时统计
输出示例:
eth0 / 100 Mbit/s (ethernet)
============================
est. current month: 45.2 GiB
Day | rx | tx | total | avg. rate
-----------------------------+------------+-------------
01 | 1.2 GiB | 8.5 GiB | 9.7 GiB | 256 kbit/s
02 | 1.5 GiB | 9.2 GiB | 10.7 GiB | 298 kbit/s
2.3.4 iptraf-ng - 综合网络监控
# 安装
yum install iptraf-ng -y
apt install iptraf-ng -y
# 运行(交互式界面)
iptraf-ng
功能包括:
- 实时流量统计
- TCP/UDP 连接监控
- 数据包大小分布
- 网络接口统计
三、生产环境实战数据分析
3.1 当前服务器流量画像
╔════════════════════════════════════════════════════════════╗
║ 服务器流量档案 ║
╠════════════════════════════════════════════════════════════╣
║ 服务器类型:Alibaba Cloud 3 (Soaring Falcon) ║
║ CPU 配置:2 核心 ║
║ 内存配置:1871 MB ║
║ 主网卡:eth0 (100 Mbps 估计) ║
║ 监测时间:2026-06-07 17:07 ║
╚════════════════════════════════════════════════════════════╝
3.1.1 累计流量分析
| 指标 | 数值 | 占比 | 业务含义 |
|---|---|---|---|
| 下行累计 | 20.15 GB | 12.0% | 用户请求、文件上传 |
| 上行累计 | 147.35 GB | 88.0% | 网页响应、文件下载 |
| 回环流量 | 164.54 GB | - | 内部服务通信 |
| 总业务流量 | 167.50 GB | 100% | 对外服务总量 |
3.1.2 实时流量趋势(3 秒采样)
时间戳 下行 (KB/s) 上行 (KB/s) 带宽利用率
─────────────────────────────────────────────────────
23:07:19 1.82 21.11 0.02%
23:07:20 0.59 8.24 0.01%
23:07:21 0.00 0.00 0.00%
─────────────────────────────────────────────────────
平均 0.80 9.78 0.01%
趋势分析:
- 流量波动大 - 峰值与谷值相差 20 倍以上
- 间歇性请求 - 存在无请求时段(23:07:21 为 0)
- 上行主导 - 上行平均是下行的 12 倍
- 带宽充足 - 利用率仅 0.01%,扩容空间大
3.2 流量健康度评估
3.2.1 错误率分析
| 错误类型 | 下行 | 上行 | 状态 |
|---|---|---|---|
| errs(错误) | 0 | 0 | ✅ 正常 |
| drop(丢弃) | 0 | 0 | ✅ 正常 |
| fifo(缓冲) | 0 | 0 | ✅ 正常 |
| frame(帧) | 0 | 0 | ✅ 正常 |
| colls(冲突) | 0 | 0 | ✅ 正常 |
| carrier(载波) | 0 | 0 | ✅ 正常 |
结论:网络连接质量优秀,无硬件/驱动问题。
3.2.2 带宽利用率评估
当前带宽利用率:0.01%
├── < 30% ✅ 健康区间(当前)
├── 30-60% ⚠️ 关注区间
├── 60-80% ⚠️ 预警区间
└── > 80% ❌ 危险区间(需扩容)
3.3 业务类型推断
基于流量特征分析:
| 特征 | 观测值 | 推断业务 |
|---|---|---|
| TX/RX 比 | 7.3:1 | Web 服务/API 服务 |
| 平均上行 | 9.78 KB/s | 中小型网站 |
| 流量波动 | 大 | 间歇性访问 |
| 回环流量 | 高 | 多服务架构 |
| Docker 流量 | 无 | 非容器化部署 |
综合判断:这是一台传统架构的 Web 应用服务器,运行 Nginx+ PHP/Python/Java + MySQL 组合。
四、流量异常诊断与排查
4.1 常见流量异常类型
4.1.1 异常流量特征矩阵
| 异常类型 | 下行变化 | 上行变化 | 包速率 | 典型原因 |
|---|---|---|---|---|
| CC 攻击 | ↑↑↑ | ↑↑ | 极高 | HTTP 洪水攻击 |
| DDoS 攻击 | ↑↑↑↑ | → | 极高 | 流量淹没攻击 |
| 数据泄露 | → | ↑↑↑ | 中高 | 敏感数据外传 |
| 爬虫刷量 | ↑↑ | ↑↑ | 高 | 恶意爬虫 |
| 配置错误 | → | ↑ | 正常 | 重复响应/循环 |
| 备份任务 | → | ↑↑ | 中 | 定时备份外传 |
| 同步异常 | ↑↑ | ↑↑ | 中 | 数据同步风暴 |
4.2 诊断流程 SOP
┌─────────────────────────────────────────────────────────┐
│ 流量异常诊断流程图 │
└─────────────────────────────────────────────────────────┘
发现异常
│
▼
┌───────────────┐
│ 1. 确认异常类型 │ ──→ sar -n DEV 1 10(实时监测)
└───────────────┘
│
▼
┌───────────────┐
│ 2. 定位来源 IP │ ──→ iftop -P -n -i eth0
└───────────────┘
│
▼
┌───────────────┐
│ 3. 分析请求特征 │ ──→ tail -f /var/log/nginx/access.log
└───────────────┘
│
▼
┌───────────────┐
│ 4. 确定应对策略 │ ──→ 防火墙/限流/扩容
└───────────────┘
│
▼
┌───────────────┐
│ 5. 实施并验证 │ ──→ 再次监测确认恢复
└───────────────┘
4.3 实战排查命令集
4.3.1 快速诊断脚本
#!/bin/bash
# 流量异常快速诊断脚本
echo "========== 流量异常诊断报告 =========="
echo "时间:$(date)"
echo ""
# 1. 实时流量
echo "【1. 实时流量】"
sar -n DEV 1 3 | tail -5
# 2. 连接数统计
echo ""
echo "【2. TCP 连接统计】"
netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
# 3. 来源 IP 排行
echo ""
echo "【3. 来源 IP TOP10】"
netstat -an | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10
# 4. 错误统计
echo ""
echo "【4. 网卡错误统计】"
cat /proc/net/dev | grep eth0 | awk '{print "下行错误:"$3, "上行错误:"$10, "下行丢弃:"$4, "上行丢弃:"$11}'
echo ""
echo "======================================"
4.3.2 攻击流量识别
# 检查单一 IP 高频请求
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
# 检查特定 URI 高频请求
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
# 检查异常 User-Agent
awk -F'"' '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
# 检查 4xx/5xx 错误率
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
4.4 应急响应措施
4.4.1 临时封禁 IP
# 使用 iptables 封禁
iptables -A INPUT -s 192.168.1.100 -j DROP
# 使用 firewall-cmd(CentOS 7+)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject'
firewall-cmd --reload
# 使用 Nginx 限流
# 在 nginx.conf 中添加:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
location / {
limit_req zone=one burst=20 nodelay;
}
4.4.2 带宽限制
# 使用 tc 命令限制带宽
tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms
# 恢复默认
tc qdisc del dev eth0 root
五、带宽优化与成本控制
5.1 带宽优化技术栈
5.1.1 内容压缩
# Nginx Gzip 配置
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript
application/javascript application/xml+rss
application/json application/xml;
压缩效果对比:
| 文件类型 | 原始大小 | Gzip 后 | 压缩率 |
|---|---|---|---|
| HTML | 100 KB | 25 KB | 75% |
| CSS | 50 KB | 10 KB | 80% |
| JavaScript | 200 KB | 60 KB | 70% |
| JSON | 80 KB | 15 KB | 81% |
5.1.2 缓存策略
# 静态资源缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, immutable";
access_log off;
}
# 动态内容缓存
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;
location /api/ {
proxy_cache my_cache;
proxy_cache_valid 200 10m;
proxy_cache_valid 404 1m;
}
5.1.3 CDN 加速
CDN 流量对比:
| 场景 | 源站流量 | CDN 流量 | 节省比例 |
|---|---|---|---|
| 无 CDN | 100 GB | - | - |
| 静态资源 CDN | 40 GB | 60 GB | 60% |
| 全站 CDN | 15 GB | 85 GB | 85% |
主流 CDN 价格参考(2026 年):
| 服务商 | 价格(元/GB) | 免费额度 |
|---|---|---|
| 阿里云 CDN | 0.24 | 10 GB/月 |
| 腾讯云 CDN | 0.23 | 10 GB/月 |
| 七牛云 CDN | 0.21 | 10 GB/月 |
| Cloudflare | 免费 | 不限 |
5.2 云厂商带宽计费模式
5.2.1 计费方式对比
| 计费方式 | 适用场景 | 成本估算 | 优点 | 缺点 |
|---|---|---|---|---|
| 按固定带宽 | 流量稳定 | 100 元/5Mbps/月 | 可预测、unlimited 流量 | 闲置浪费 |
| 按使用流量 | 流量波动大 | 0.8 元/GB | 用多少付多少 | 突发成本高 |
| 按 95 峰值 | 大型企业 | 协商定价 | 削峰填谷 | 门槛高 |
| 按日峰值月平均 | 中型企业 | 协商定价 | 平衡成本 | 计算复杂 |
5.2.2 成本优化建议
当前配置估算:
├── 带宽:假设 5 Mbps
├── 月流量:167.5 GB(根据监测数据推算)
├── 按固定带宽:约 100 元/月
└── 按流量计费:约 134 元/月(167.5 × 0.8)
优化建议:
1. ✅ 启用 CDN - 预计节省 60% 源站流量
2. ✅ 开启 Gzip - 预计减少 70% 文本传输
3. ✅ 配置缓存 - 减少重复请求
4. ✅ 图片优化 - WebP 格式节省 30%
5. ✅ 懒加载 - 减少首屏流量
六、自动化监控方案搭建
6.1 基础监控脚本
#!/bin/bash
# /usr/local/bin/bandwidth_monitor.sh
# 配置
ETH="eth0"
THRESHOLD_RX=10485760 # 10 MB/s
THRESHOLD_TX=10485760 # 10 MB/s
LOG_FILE="/var/log/bandwidth.log"
ALERT_EMAIL="admin@example.com"
# 获取流量
RX_BYTES=$(cat /sys/class/net/$ETH/statistics/rx_bytes)
TX_BYTES=$(cat /sys/class/net/$ETH/statistics/tx_bytes)
# 等待 1 秒再次获取
sleep 1
RX_BYTES2=$(cat /sys/class/net/$ETH/statistics/rx_bytes)
TX_BYTES2=$(cat /sys/class/net/$ETH/statistics/tx_bytes)
# 计算速率
RX_RATE=$((RX_BYTES2 - RX_BYTES))
TX_RATE=$((TX_BYTES2 - TX_BYTES))
# 记录日志
echo "$(date) RX: $RX_RATE bytes/s, TX: $TX_RATE bytes/s" >> $LOG_FILE
# 告警判断
if [ $RX_RATE -gt $THRESHOLD_RX ] || [ $TX_RATE -gt $THRESHOLD_TX ]; then
echo "⚠️ 带宽告警!RX: $RX_RATE, TX: $TX_RATE" | mail -s "带宽监控告警" $ALERT_EMAIL
logger "带宽告警:RX=$RX_RATE, TX=$TX_RATE"
fi
6.2 定时任务配置
# 添加到 crontab
crontab -e
# 每分钟执行一次监控
* * * * * /usr/local/bin/bandwidth_monitor.sh
# 每天生成流量报告
0 23 * * * /usr/local/bin/daily_bandwidth_report.sh
6.3 Grafana + Prometheus 监控方案
6.3.1 安装 Node Exporter
# 下载
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
cd node_exporter-*/
# 启动
./node_exporter &
# systemd 服务
cat > /etc/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Node Exporter
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
EOF
systemctl enable node_exporter
systemctl start node_exporter
6.3.2 Prometheus 配置
# prometheus.yml
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
metrics_path: /metrics
6.3.3 Grafana 仪表盘
推荐导入仪表盘 ID:
- 1860 - Node Exporter Full
- 10408 - Linux Server Metrics
- 13659 - Network Traffic Dashboard
七、附录:命令速查手册
7.1 流量监测命令速查
| 命令 | 功能 | 示例 |
|---|---|---|
cat /proc/net/dev |
查看网卡统计 | cat /proc/net/dev |
sar -n DEV |
历史流量统计 | sar -n DEV 1 10 |
iftop |
实时流量排行 | iftop -P -n -i eth0 |
nethogs |
进程流量统计 | nethogs eth0 |
vnstat |
流量历史记录 | vnstat -d |
iptraf-ng |
综合网络监控 | iptraf-ng |
watch |
持续监控 | watch -n 1 'cat /sys/class/net/eth0/statistics/tx_bytes' |
7.2 故障排查命令速查
| 命令 | 功能 | 示例 |
|---|---|---|
netstat -an |
查看连接 | `netstat -an |
ss -s |
连接统计 | ss -s |
tcpdump |
抓包分析 | tcpdump -i eth0 port 80 |
mtr |
路由追踪 | mtr www.example.com |
ping |
连通性测试 | ping -c 4 8.8.8.8 |
traceroute |
路径追踪 | traceroute www.example.com |
7.3 日志分析命令速查
| 命令 | 功能 | 示例 |
|---|---|---|
tail -f |
实时查看日志 | tail -f /var/log/nginx/access.log |
awk |
日志分析 | `awk ‘{print $1}’ access.log |
grep |
日志过滤 | grep "404" access.log |
goaccess |
日志可视化 | goaccess access.log -o report.html |
总结
本文从理论基础到生产实践,全面讲解了服务器流量监控的完整知识体系:
核心要点回顾
- 流量本质 = 数据包传输总量,区分存储单位(Byte)和传输单位(bit)
- 上下行含义 = 下行是接收(用户请求),上行是发送(服务器响应)
- 监测工具链 = /proc(内核级)→ sar(系统级)→ iftop/nethogs(应用级)
- 异常诊断 = 流量监测 → 来源定位 → 日志分析 → 应急处理
- 优化方向 = 压缩 + 缓存 + CDN + 合理计费模式
- 自动化监控 = 脚本 + 定时任务 + Prometheus/Grafana
建议
- 部署实时流量监控脚本
- 配置带宽告警阈值(建议 70%)
- 启用 Gzip 压缩
- 评估 CDN 接入必要性
- 建立流量异常应急响应流程
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)