DNS压测工具-dnsperf的安装和使用(centos)

系统调优

系统调优脚本,保存为sh文件,chmod提权后执行即可

#!/bin/sh
#系统全局允许分配的最大文件句柄数:
sysctl -w fs.file-max=2097152
sysctl -w fs.nr_open=2097152
echo 2097152 > /proc/sys/fs/nr_open
#允许当前会话 / 进程打开文件句柄数:
ulimit -n 1048576
#持久化 'fs.file-max' 设置到 /etc/sysctl.conf 文件:
FIND_FILE_SYSCTL="/etc/sysctl.conf"
FIND_STR_FS="fs.file-max"
if [ `grep -c "$FIND_STR_FS" $FIND_FILE_SYSCTL` -ne '0' ];thenecho "已存在fs.file-max配置,开始修改"sed -i '/fs.file-max/d' /etc/sysctl.confecho fs.file-max = 10485761 >> /etc/sysctl.confecho "fs.file-max配置,修改完成"else echo "不存在fs.file-max配置,开始写入"echo fs.file-max = 10485761 >> /etc/sysctl.confecho "fs.file-max配置,写入完成"
fi
#/etc/systemd/system.conf 设置服务最大文件句柄数:
FIND_FILE_SYSTEM="/etc/systemd/system.conf"
FIND_STR_1="DefaultLimitNOFILE"
if [ `grep -c "$FIND_STR_1" $FIND_FILE_SYSTEM` -ne '0' ];thenecho "已存在DefaultLimitNOFILE配置,开始修改"sed -i '/DefaultLimitNOFILE/d' /etc/systemd/system.confecho DefaultLimitNOFILE=1048576 >> /etc/systemd/system.confecho "DefaultLimitNOFILE配置,修改完成"
elseecho "不存在DefaultLimitNOFILE配置,开始写入"echo DefaultLimitNOFILE=1048576 >> /etc/systemd/system.confecho "DefaultLimitNOFILE配置,写入完成"
fi#/etc/security/limits.conf 持久化设置允许用户 / 进程打开文件句柄数:
#*      soft   nofile      1048576
#*      hard   nofile      1048576
FIND_FILE_LIMITS="/etc/security/limits.conf"
FIND_STR_SOFT="* soft nofile "
FIND_STR_HARD="* hard nofile"
if [ `grep -c "$FIND_STR_SOFT" $FIND_FILE_LIMITS` -ne '0' ];thenecho "已存在soft_nofile配置,开始修改"sed -i '/* soft nofile /d' /etc/security/limits.confecho '* soft nofile 1048576' >> /etc/security/limits.confecho "soft_nofile配置,修改完成"
elseecho "不存在soft_nofile配置,开始写入"echo '* soft nofile 1048576' >> /etc/security/limits.confecho "soft_nofile配置,写入完成"
fiif [ `grep -c "$FIND_STR_HARD" $FIND_FILE_LIMITS` -ne '0' ];thenecho "已存在hard_nofile配置,开始修改"sed -i '/* hard nofile/d' /etc/security/limits.confecho '* hard nofile 1048576' >> /etc/security/limits.confecho "hard_nofile配置,修改完成"
elseecho "不存在hard_nofile配置,开始写入"echo '* hard nofile 1048576' >> /etc/security/limits.confecho "hard_nofile配置,写入完成"
fi#TCP 协议栈网络参数
#并发连接 backlog 设置:
sysctl -w net.core.somaxconn=32768
sysctl -w net.ipv4.tcp_max_syn_backlog=16384
sysctl -w net.core.netdev_max_backlog=16384
#可用知名端口范围:
sysctl -w net.ipv4.ip_local_port_range='1000 65535'
#TCP Socket 读写 Buffer 设置:
sysctl -w net.core.rmem_default=262144
sysctl -w net.core.wmem_default=262144
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
sysctl -w net.core.optmem_max=16777216
#sysctl -w net.ipv4.tcp_mem='16777216 16777216 16777216'
sysctl -w net.ipv4.tcp_rmem='1024 4096 16777216'
sysctl -w net.ipv4.tcp_wmem='1024 4096 16777216'#TCP 连接追踪设置:
sysctl -w net.ipv4.tcp_max_tw_buckets=1048576
sysctl -w net.ipv4.tcp_fin_timeout=15
sysctl -w net.ipv4.ip_local_port_range="500 65535"echo 1000000 >> /proc/sys/fs/nr_open
ulimit -n 100000echo "系统优化完成!!!"```

安装

安装dnsperf依赖ck和nghttp2,所以要先安装这两个应用

1、安装ck

wget https://github.com/concurrencykit/ck/archive/0.6.0.tar.gz
tar -zxvf ck-0.6.0.tar.gz 
cd ck-0.6.0
./configure 
make
make install

2、因为nghttp2依赖python3.8以上的环境,所以需要先安装python

wget https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tgz
#安装依赖
sudo yum install gcc openssl-devel bzip2-devel libffi-devel zlib-develtar -zxvf Python-3.8.12.tgz cd Python-3.8.12./configuremakemake altinstall

3、安装nghttp2

`wget https://github.com/nghttp2/nghttp2/releases/download/v1.45.1/nghttp2-1.45.1.tar.gz`
#安装依赖
yum -y groupinstall "Development Tools"
yum -y install openssl-devel libxml2-devel libev-devel jemalloc-devel python-devel
tar -zxvf nghttp2-1.45.1.tar.gz 
cd nghttp2-1.45.1
./configure
make
make install

4、安装dnsperf


export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
wget https://www.dns-oarc.net/files/dnsperf/dnsperf-2.13.0.tar.gz
tar -zxvf dnsperf-2.13.0.tar.gz
cd dnsperf-2.13.0
./configure --with-nghttp2=/usr/local --with-ssl --with-zlib
make
make install

至此,安装完毕

使用

使用前需要先准备一个dns配置文件,内容如下(例):
在这里插入图片描述

1、使用如下命令开始测试:

dnsperf -d dnstest.com.txt -s 10.38.248.218  -c 256 -Q 300000 -q 1000000 -l 10 -S 1

在这里插入图片描述

2、通过上图可知,被测试机A的QPS性能为116044

Dnsperf参数说明(常用参数):

-d :指定datafile的域名数据进行读取,进行压力测试
-s : 指定被测试的机器
-l :指定测试的时间
-c:指定并发探测数
2.所有参数:
-s 用来指定DNS服务器的IP地址,默认值是127.0.0.1
-p 用来指定DNS服务器的端口,默认值是53
-d 用来指定DNS消息的内容文件,该文件中包含要探测的域名和资源记录类型,见下文
-t 用来指定每个请求的超时时间,默认值是3000ms
-Q 用来指定本次压测的最大请求数,默认值是1000
-c 用来指定并发探测数,默认值是100. dnsperf会从-d指定的文件中随机选取100个座位探测域名来发送DNS请求.
-l 用来指定本次压测的时间,默认值是无穷大。
-e 本选项通过EDNS0,在OPT资源记录中运用edns-client-subnet来指定真实的client ip.
-i 用来指定前后探测的时间间隔,因为dnsperf是一个压测工具,所以本选项目前还不支持。
-P 指定用哪个传输层协议发送DNS请求,udp或者tcp。默认值是udp
-f 指定用什么地址类型发送DNS请求,inet或者inet6。默认值是inet
-v 除了标准的输出外,还输出每个相应码的个数。
-h 打印帮助

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/162071.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA基础(JAVA SE)学习笔记(二)变量与运算符

前言 1. 学习视频: 尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)_哔哩哔哩_bilibili 2023最新Java学习路线 - 哔哩哔哩 正文 第一阶段:Java基本语法 1. Java 语言概述 JAVA基础(JAVA SE)学习…

抖音同城榜上榜策略

随着抖音的普及,越来越多的人开始使用抖音来展示自己的才华、记录生活或者做推广。但是,如何让自己的短视频在抖音同城榜上榜,成为本地热门话题呢?下面,我将分享一些实用的策略,帮助您实现这一目标。 抖音同…

Unreal Engine 4 + miniconda + Python2.7 + Pycharm

1.​首先启用UE4插件里的Python Scripting插件 ​ 2. 在UE4项目设置中 开启Python开发者模式 生成unreal.py文件,用于在Pychram中引入Unreal PythonAPI 生成的unreal.py 在: "项目路径\Intermediate\PythonStub\unreal.py"3. 安装Miniconda…

stable-diffusion-webui sdxl模型代码分析

采样器这块基本都是用的k-diffusion,模型用的是stability的原生项目generative-models中的sgm,这点和fooocus不同,fooocus底层依赖comfyui中的models,comfy是用load_state_dict的方式解析的,用的load_checkpoint_guess…

java影院管理信息系统设计参考学习

系统设计: 1.1功能结构 为了更好的去理清本系统整体思路,对该系统以结构图的形式表达出来,设计实现该影院系统的功能结构图如下所示: 图1-1 系统总体结构图 1.2数据库设计 1.2.1数据库E/R图 ER图是由实体及其关系构成的图&…

【AI视野·今日Robot 机器人论文速览 第五十五期】Mon, 16 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Mon, 16 Oct 2023 Totally 27 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚***AcTExplore, 对于未知物体的主动触觉感知。基于强化学习自动探索物体的表面形貌,增量式重建。(from 马里兰…

Node介绍(nvm安装和npm常用命令)

文章目录 Node 介绍为什么要学习 Node.jsNode.js 是什么Node能做什么nvm常用的 nvm 命令npm 快捷键npm 常用命令切换 npm 下包镜像源常用命令 Node 介绍 为什么要学习 Node.js 企业需求 具有服务端开发经验更改front-endback-end全栈开发工程师基本的网站开发能力 服务端前端…

【2023最新版】Python全栈知识点总结

python全栈知识点总结 全栈即指的是全栈工程师,指掌握多种技能,并能利用多种技能独立完成产品的人。就是与这项技能有关的都会,都能够独立的完成。 全栈只是个概念,也分很多种类。真正的全栈工程师涵盖了web开发、DBA 、爬虫 、…

CSS属性:定位属性+案例讲解:博雅互动 前端开发入门笔记(五)

CSS中的定位属性用于指定HTML元素在文档中的位置。常用的定位属性有以下几种: position:用于定义元素的定位方式。 static(默认值):元素遵循正常的文档流,不进行特殊的定位。relative:相对定位&…

无声的世界,精神科用药并结合临床的一些分析及笔记(九)

住院计划表 她宫颈癌的手术决定在中心妇产医院进行,由于她抑郁症的爆发,也需要在安定医院调理,我决定制定一个住院计划,征求她和大夫的同意: 节点1:在安定医院治疗抑郁症,调整心理状态&#x…

AMEYA360:君正低功耗AIoT图像识别处理器—X1600/X1600E

• 高性能 XBurst 1 CPU,主频1.0GHz • 超低功耗 • 内置LPDDR2(X1600:32MB,X1600E:64MB) • 实时控制核XBurst 0,面向安全管理和实时控制 • 丰富的外设接口 应用领域 • 基于二维码的智能商业 • 智能物联网 • 高端…

C++ 类和对象(上)------超详细解析,小白必看系列

目录 一、前言 二、面向过程和面向对象初步认识 三、类的引入 三、类的定义 四、类的访问限定符及封装 💦访问限定符 (重点!!!!) 💦封装 五、类的作用域 六、类的实例化 …

[MAUI]深入了解.NET MAUI Blazor与Vue的混合开发

文章目录 Vue在混合开发中的特点创建MAUI项目创建Vue应用使用element-ui组件库JavaScript和原生代码的交互传递根组件参数从设备调用Javascript代码从Vue页面调用原生代码 读取设备信息项目地址 .NET MAUI结合Vue的混合开发可以使用更加熟悉的Vue的语法代替Blazor语法&#xff…

TCP/IP(十八)TCP 实战抓包分析(二)TCP 三次握手和四次挥手

一 TCP三次握手和四次挥手 说明: 本文三次握手和四次挥手 无异常情况下的分析目标: 通过抓取和分析 HTTP 协议网络包,理解 TCP 三次握手和四次挥手的工作原理 ① 抓包和测试准备 1、 服务端事先执行 tcpdump 抓包 --> 172.25.2.100tcpdump -i b…

【mfc/VS2022】计图实验:绘图工具设计知识笔记2

按钮添加处理程序 1.类视图找到对应类右击,类向导 2. 找到对应的的按钮id 如何将画出的两个相交的圆都显示出来,而不是重叠(如下图)隐藏了一条圆弧 问题如图: 因为矩形和圆心其实是个背景色的封闭图形,所…

ruoyi识别访问设备是pc端还是移动端跳转到对应的登录页面

背景需求 ruoyi框架,前后端分离。现在要在用户访问的时候根据不同的设备跳转到不同的登录页面。 教程 router/index.js 修改src/router/index.js,在这里增加自己的要跳转的页面 permission.js 在白名单中添加自己的登录页面 增加以下识别的代码 le…

TCP通信-同时接受多个客户端消息

同时处理多个客户端消息的原理 代码实现 public class ClientDemo1 {public static void main(String[] args) {try {System.out.println("客户端启动");// 1、创建Socket通信管道请求有服务端的连接// public Socket(String host, int port)// 参数一:服…

【网络安全 --- MySQL数据库】网络安全MySQL数据库应该掌握的知识,还不收藏开始学习。

四,MySQL 4.1 mysql安装 #centos7默认安装的是MariaDB-5.5.68或者65, #查看版本的指令:[rootweb01 bbs]# rpm -qa| grep mariadb #安装mariadb的最新版,只是更新了软件版本,不会删除之前原有的数据。 #修改yum源的配…

ABB变频器使用PROFINET IO通信模块时的激活方法

ABB变频器使用PROFINET IO通信模块时的激活方法 ABB传动通讯总线适配器的激活(ACS380): 首先,如下图所示,要采购并安装PROFINET IO总线通信模块(我这里支持3种通信协议,大家在实际使用时,用到哪种就购买哪种即可), 如下图所示,进入参数设置, 如下图所示,进入“完…

客户管理系统是如何提高工作效率的?

对于大部分企业来说销售部门相比市场营销等部门,会投入更大的人力、物力,客户管理系统在其中发挥着重要作用,它是如何提高工作效率的。 在数字化高度发达的今天,销售自动化已经步入了企业的经营管理中,大大地改善了销…