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

56 lines
1.2 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"
THREADS=20
QUERIES=1000
# 创建临时文件存储进程ID
pids=()
echo "开始DNS压力测试..."
echo "服务器: $SERVER"
echo "域名: $DOMAIN"
echo "线程数: $THREADS"
echo "总查询数: $QUERIES"
echo "--------------------------------------"
# 记录开始时间(秒)
start_time=$SECONDS
# 运行并发查询
for ((i=1; i<=THREADS; i++)); do
for ((j=1; j<=$((QUERIES/THREADS)); j++)); do
dig @$SERVER $DOMAIN A +short > /dev/null &
pids+=($!)
done
# 每启动5个线程暂停一下避免系统资源瞬间耗尽
if (( $i % 5 == 0 )); then
echo "线程 $i 已启动,已完成 $i/$THREADS 个线程..."
sleep 0.5
fi
done
echo "所有 $THREADS 个线程已启动,共执行 $QUERIES 个查询,等待完成..."
# 等待所有查询完成
for pid in "${pids[@]}"; do
wait $pid
done
# 计算执行时间
elapsed=$((SECONDS - start_time))
# 计算QPS每秒查询数
if [ $elapsed -eq 0 ]; then
elapsed=1 # 避免除以零
fi
qps=$((QUERIES / elapsed))
echo "--------------------------------------"
echo "所有查询已完成!"
echo "执行时间: $elapsed"
echo "QPS: $qps 次/秒"
echo "--------------------------------------"