Files
dns-server/dns/test_optimization_v2.sh
Alex Yang cdac4fcf43 update
2026-01-16 11:09:11 +08:00

89 lines
2.4 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# DNS性能优化验证脚本使用并发查询
SERVER="127.0.0.1"
DOMAIN="example.com"
CONCURRENCY=100
QUERIES=10000
echo "========================================="
echo "DNS服务器多线程优化验证测试"
echo "========================================="
echo "服务器: $SERVER"
echo "域名: $DOMAIN"
echo "并发数: $CONCURRENCY"
echo "总查询数: $QUERIES"
echo "========================================="
echo ""
echo "启动DNS服务器..."
./dns-server > /dev/null 2>&1 &
DNS_PID=$!
echo "DNS服务器PID: $DNS_PID"
sleep 5
echo ""
echo "========================================="
echo "开始压力测试前系统状态:"
echo "========================================="
echo "CPU使用率:"
top -b -n 1 | grep "Cpu(s)" | awk '{print " " $2 "% 用户, " $4 "% 系统, " $8 "% 空闲"}'
echo ""
echo "内存使用情况:"
free -h | grep -E "Mem|Swap" | awk '{print " " $1 ": " $3 "/" $2 " (" $3/$2*100 "% 使用)"}'
echo ""
echo "DNS服务器进程资源使用:"
ps -p $DNS_PID -o %cpu,%mem,cmd --no-headers | awk '{print " CPU: " $1 "%, 内存: " $2 "%"}'
echo ""
echo "========================================="
echo "开始压力测试..."
echo "========================================="
start_time=$(date +%s.%N)
for ((i=1; i<=$QUERIES; i++)); do
dig @$SERVER $DOMAIN A +short > /dev/null 2>&1 &
if (( $i % $CONCURRENCY == 0 )); then
wait
fi
done
wait
end_time=$(date +%s.%N)
elapsed=$(echo "$end_time - $start_time" | bc)
qps=$(echo "scale=2; $QUERIES / $elapsed" | bc)
echo ""
echo "========================================="
echo "压力测试后系统状态:"
echo "========================================="
echo "CPU使用率:"
top -b -n 1 | grep "Cpu(s)" | awk '{print " " $2 "% 用户, " $4 "% 系统, " $8 "% 空闲"}'
echo ""
echo "内存使用情况:"
free -h | grep -E "Mem|Swap" | awk '{print " " $1 ": " $3 "/" $2 " (" $3/$2*100 "% 使用)"}'
echo ""
echo "DNS服务器进程资源使用:"
ps -p $DNS_PID -o %cpu,%mem,cmd --no-headers 2>/dev/null | awk '{print " CPU: " $1 "%, 内存: " $2 "%"}'
echo ""
echo "========================================="
echo "测试结果:"
echo "========================================="
echo "总查询数: $QUERIES"
echo "执行时间: $elapsed"
echo "QPS: $qps 次/秒"
echo "========================================="
echo ""
echo "停止DNS服务器..."
kill $DNS_PID 2>/dev/null
sleep 2
echo ""
echo "测试完成!"