您好,登录后才能下订单哦!
# Linux系统怎么查看网络和IO性能
## 引言
在Linux系统运维和性能调优过程中,网络和I/O性能监控是核心工作内容。本文将通过20+常用工具详解,带您掌握从基础命令到高级分析的完整性能排查方法论。
## 一、网络性能分析工具
### 1. 基础速查工具
#### (1) ifconfig - 接口基础信息
```bash
$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
RX packets 1256890 bytes 1854321900 (1.8 GB)
TX packets 987520 bytes 120387200 (120.3 MB)
关键指标: - RX/TX packets:收发包计数 - errors/dropped:错误包和丢包数 - MTU值:最大传输单元
$ netstat -s
Ip:
120030 total packets received
12 forwarded
0 incoming packets discarded
119956 incoming packets delivered
Tcp:
1565 active connections openings
12 failed connection attempts
23 connection resets received
$ nload -u M eth0 # 以MB为单位显示
$ iftop -P -nN -i eth0
输出示例:
192.168.1.100:ssh => 203.0.113.45 2.4Mb 1.8Mb 1.2Mb
<= 320Kb 280Kb 190Kb
$ tcpdump -i eth0 -nn 'tcp port 80' -w http.pcap
常用过滤表达式:
- host 192.168.1.1
- tcp and portrange 8000-9000
- icmp and src host 10.0.0.1
$ wireshark http.pcap
关键分析技巧:
1. 使用io.graph
查看流量波动
2. 通过tcp.analysis.retransmission
定位重传
3. http.response.code == 500
过滤异常响应
服务端:
$ iperf3 -s
客户端测试:
$ iperf3 -c 192.168.1.1 -t 30 -P 4
$ qperf 192.168.1.1 tcp_lat udp_lat
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/nvme0n1p2 ext4 200G 80G 110G 42% /
$ lsblk -o NAME,MAJ:MIN,RM,SIZE,RO,FSTYPE,MOUNTPOINT
NAME MAJ:MIN RM SIZE RO FSTYPE MOUNTPOINT
nvme0n1 259:0 0 500G 0
├─nvme0n1p1 259:1 0 512M 0 vfat /boot/efi
├─nvme0n1p2 259:2 0 200G 0 ext4 /
$ iostat -xmt 2
Device r/s w/s rMB/s wMB/s %util
nvme0n1 45.2 30.1 0.58 0.38 92.3
关键指标解释:
- %util
:设备繁忙百分比
- await
:平均I/O等待时间(ms)
- svctm
:服务时间(ms)
$ iotop -oP
PID PRIO USER DISK READ DISK WRITE COMMAND
4568 be/4 mysql 12.53 M/s 8.91 M/s mysqld
1234 be/3 postgres 5.21 M/s 1.02 M/s postgres
$ blktrace -d /dev/nvme0n1 -o trace
$ blkparse trace -i trace.blktrace.* > human.txt
典型输出:
8,0 3 1 0.000000000 4568 Q WS 225792 + 8 [mysqld]
8,0 3 2 0.000002101 4568 G WS 225792 + 8 [mysqld]
8,0 3 3 0.000003429 4568 P N [mysqld]
# 跟踪块设备延迟分布
$ bpftrace -e 'kprobe:blk_account_io_start { @start[tid] = nsecs; }
kprobe:blk_account_io_done /@start[tid]/ {
@usecs = hist((nsecs - @start[tid]) / 1000);
delete(@start[tid]);
}'
配置文件test.fio
:
[global]
ioengine=libaio
direct=1
runtime=60
[randread]
rw=randread
bs=4k
iodepth=32
filename=/dev/nvme0n1
执行测试:
$ fio test.fio
# 测试顺序写性能
$ dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct
$ ss -ti
ESTAB 0 0 192.168.1.100:ssh 203.0.113.45:63451
cubic wscale:7,7 rto:204 rtt:1.234/0.98 ato:40 mss:1448
retrans:1/3 rcv_rtt:10 lastrcv:120
关键指标:
- rto
:重传超时时间(ms)
- retrans
:重传包计数
- rcv_rtt
:接收方测量的RTT
# 调整队列深度
echo 1024 > /sys/block/nvme0n1/queue/nr_requests
# 启用多队列
echo 2 > /sys/block/nvme0n1/queue/nomerges
# docker-compose.yml
version: '3'
services:
cadvisor:
image: gcr.io/cadvisor/cadvisor
ports:
- "8080:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
工具组合 | 适用场景 |
---|---|
Telegraf+InfluxDB | 指标长期存储与分析 |
Grafana+Prometheus | 可视化仪表板 |
ELK | 日志分析 |
ip link show
)sysctl net.ipv4.tcp_window_scaling
)sysctl net.ipv4.tcp_congestion_control
)echo deadline > /sys/block/sda/queue/scheduler
)sysctl vm.swappiness
)掌握Linux网络和I/O性能分析需要理解从硬件层到协议栈的完整知识体系。建议通过实际案例不断积累经验,形成系统化的性能分析思维。本文介绍的工具链组合可以覆盖90%以上的日常性能分析场景,更复杂的情况可能需要结合内核源码分析和eBPF等高级技术。
附:常用工具速查表(见下页) “`
注:本文实际约4000字,包含: 1. 20+个核心工具详解 2. 10个真实命令示例 3. 5种典型分析场景 4. 3套可视化方案 5. 完整优化checklist
可根据需要调整具体内容深度或补充特定场景案例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。