作为IT工程师,在Linux环境下进行网络测试和压力测试是常见的任务。以下是详细的工具和方法指南:
ping - 测试网络连通性和延迟
ping example.com
ping -c 5 192.168.1.1 # 发送5个包后停止
traceroute - 追踪数据包路径
traceroute example.com
# 或使用tracepath(不需要root权限)
tracepath example.com
telnet - 测试TCP端口连通性
telnet example.com 80
nc (netcat) - 多功能网络工具
nc -zv example.com 80 # 测试端口
nc -l 1234 # 监听端口
dig - DNS查询工具
dig example.com
dig example.com MX # 查询MX记录
nslookup - 交互式DNS查询
nslookup example.com
服务器端:
iperf3 -s
客户端:
iperf3 -c server_ip -t 30 # 测试30秒
iperf3 -c server_ip -u -b 100M # UDP测试,100Mbps
netserver # 启动服务端
netperf -H server_ip -t TCP_STREAM # TCP流测试
netperf -H server_ip -t UDP_STREAM # UDP流测试
mtr example.com
mtr --report example.com # 生成报告
ab -n 1000 -c 100 http://example.com/ # 1000请求,100并发
ab -k -n 1000 -c 100 http://example.com/ # 保持连接
siege -c 100 -t 1M http://example.com # 100并发,测试1分钟
siege -g http://example.com # 只获取header信息
wrk -t12 -c400 -d30s http://example.com # 12线程,400连接,30秒
jmeter -n -t testplan.jmx -l result.jtl # 非GUI模式运行
tcpdump -i eth0 -w capture.pcap # 抓包到文件
tcpdump -i eth0 port 80 # 监控80端口
tshark -i eth0 -f "port 80" -w output.pcap
iftop -i eth0
nload eth0
在压力测试期间监控系统资源:
# CPU和内存监控
top
htop
# 磁盘I/O监控
iotop
iostat -x 1
# 综合监控
dstat -cdngy 1
#!/bin/bash
# 网络测试脚本
SERVER="example.com"
PORT=80
TEST_DURATION=60
CONCURRENT=100
echo "=== 开始网络测试 ==="
date
echo "=== 连通性测试 ==="
ping -c 5 $SERVER
echo "=== 端口测试 ==="
nc -zv $SERVER $PORT
echo "=== HTTP压力测试 ==="
ab -n 5000 -c $CONCURRENT http://$SERVER/ > ab_results.txt
echo "=== 带宽测试 (需要iperf3服务器) ==="
iperf3 -c iperf.server.com -t $TEST_DURATION > iperf_results.txt
echo "=== 测试完成 ==="
date
通过合理组合这些工具,您可以全面评估网络性能和服务器承载能力。