smartdns icon indicating copy to clipboard operation
smartdns copied to clipboard

关于DNS性能

Open maojianyou opened this issue 10 months ago • 1 comments

目前最新版本: smartdns.1.2024.06.12-2222.x86_64-linux-all.tar.gz 宿主机: PVE8.3 linux虚拟机环境: centos7.9 内存: 16G 磁盘:200g ssd CPU: 2650 [email protected] 我这个并发数据测试

Image

加缓存的情况下测试,CPU耗20% 8核, 内存几乎不耗,16G内存

并发数 QPS 平均延迟 最大延迟 标准差
25,000 18,022 1.797ms 19.402ms 1.647ms
30,000 17,690 4.197ms 36.345ms 2.113ms
50,000 10,403 6.562ms 48.869ms 2.710ms
60,000 8,752 6.810ms 55.859ms 3.483ms
分析趋势:
  1. QPS(每秒查询数): 25k → 30k:基本持平(轻微下降2%) 30k → 50k:大幅下降41% 50k → 60k:继续下降16% 结论:30k是明显的性能拐点

QPS 18k ┌─────┐ │ └────┐ 12k │ └───┐ │ └─── 8k │ └───────────────── 25k 30k 50k 60k 并发数

延迟 7ms ┌ ┌─ │ ┌───┘ 4ms │ ┌───┘ │ ┌───┘ 2ms └────┘ 25k 30k 50k 60k 并发数

总结: 延迟增大主要是因为并发处理机制和资源竞争 即使有缓存,高并发下的锁竞争也会导致延迟

建议: 考虑使用多进程跟多线程 优化锁的粒度 使用无锁数据结构

还有再优化性能不

maojianyou avatar Jan 21 '25 13:01 maojianyou

基线测试,以目前的代码,大约5w qps。

之前改过一个多线程服务端版本,可以在提高一定并发。不过这个分支很久没更新了。

https://github.com/pymumu/smartdns/tree/multi-thread-server

pymumu avatar Feb 23 '25 13:02 pymumu