smartdns
smartdns copied to clipboard
关于DNS性能
目前最新版本: smartdns.1.2024.06.12-2222.x86_64-linux-all.tar.gz 宿主机: PVE8.3 linux虚拟机环境: centos7.9 内存: 16G 磁盘:200g ssd CPU: 2650 [email protected] 我这个并发数据测试
加缓存的情况下测试,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 |
| 分析趋势: |
- 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 并发数
总结: 延迟增大主要是因为并发处理机制和资源竞争 即使有缓存,高并发下的锁竞争也会导致延迟
建议: 考虑使用多进程跟多线程 优化锁的粒度 使用无锁数据结构
还有再优化性能不
基线测试,以目前的代码,大约5w qps。
之前改过一个多线程服务端版本,可以在提高一定并发。不过这个分支很久没更新了。
https://github.com/pymumu/smartdns/tree/multi-thread-server