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

news2025/1/17 23:09:21

系统调优

系统调优脚本,保存为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' ];then
    echo "已存在fs.file-max配置,开始修改"
    sed -i '/fs.file-max/d' /etc/sysctl.conf
    echo fs.file-max = 10485761 >> /etc/sysctl.conf
    echo "fs.file-max配置,修改完成"

else 
    echo "不存在fs.file-max配置,开始写入"
    echo fs.file-max = 10485761 >> /etc/sysctl.conf
    echo "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' ];then
    echo "已存在DefaultLimitNOFILE配置,开始修改"
    sed -i '/DefaultLimitNOFILE/d' /etc/systemd/system.conf
    echo DefaultLimitNOFILE=1048576 >> /etc/systemd/system.conf
    echo "DefaultLimitNOFILE配置,修改完成"
else
    echo "不存在DefaultLimitNOFILE配置,开始写入"
    echo DefaultLimitNOFILE=1048576 >> /etc/systemd/system.conf
    echo "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' ];then
    echo "已存在soft_nofile配置,开始修改"
    sed -i '/* soft nofile /d' /etc/security/limits.conf
    echo '* soft nofile 1048576' >> /etc/security/limits.conf
    echo "soft_nofile配置,修改完成"
else
    echo "不存在soft_nofile配置,开始写入"
    echo '* soft nofile 1048576' >> /etc/security/limits.conf
    echo "soft_nofile配置,写入完成"
fi

if [ `grep -c "$FIND_STR_HARD" $FIND_FILE_LIMITS` -ne '0' ];then
    echo "已存在hard_nofile配置,开始修改"
    sed -i '/* hard nofile/d' /etc/security/limits.conf
    echo '* hard nofile 1048576' >> /etc/security/limits.conf
    echo "hard_nofile配置,修改完成"
else
    echo "不存在hard_nofile配置,开始写入"
    echo '* hard nofile 1048576' >> /etc/security/limits.conf
    echo "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 100000

echo "系统优化完成!!!"```

安装

安装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-devel
 tar -zxvf Python-3.8.12.tgz 
 cd Python-3.8.12
 ./configure
 make
 make 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.coloradmin.cn/o/1107622.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.JDK的安装方法以及环境变量的配置

学习Java的第一步应该从配置环境开始,这篇博文介绍了在哪下载安装包以及如何在windows电脑中配置,希望大家看完后可以独立安装 ~ 文章目录 一、下载安装包二、 安装路径配置三、 环境变量配置四、 验证是否配置成功 一、下载安装包 安装包可以从官网下载…

第三方软件测评单位可为企业带来哪些收益?

随着信息科技的发展,软件市场竞争也越来越大,软件企业为了更好的专注于产品开发,以及保障软件质量,会将软件测试交由第三方软件测评单位进行。 第三方软件测评,顾名思义,是由独立的、与软件开发商无关的专业…

Unity中Shader的XRay透视效果

文章目录 前言一、模拟菲涅尔效果1、获取 V 向量2、获取 N 向量3、点积输出效果4、模拟出菲涅尔效果(中间暗,周围亮) 二、实现 XRay 效果1、使用半透明排序、修改混合模式、加点颜色2、增加分层效果(使用 frac 函数,只取小数部分&…

CAPL如何实现27服务解锁

在文章《CANoe-如何实现27服务解锁》里,我们介绍了诊断控制台中如何实现27解锁,如果我想在CANoe中使用CAPL程序解锁的话,又要如何实现呢? CAPL脚本也是通过模拟手动操作来实现27解锁,所以步骤为: 发送10 03发送27 01接收67 01,获取seed值根据seed值和算法,计算出key值…

自5月以来,俄罗斯Sandworm黑客侵入了11家乌克兰电信公司

导语:据乌克兰计算机应急响应团队(CERT-UA)的最新报告称,自2023年5月至9月,俄罗斯政府支持的黑客组织Sandworm成功侵入了乌克兰的11家电信服务提供商。这一组织被认为与俄罗斯武装部队的GRU有关。 简介 根据乌克兰计算…

提高研发效率还得看Apipost

随着数字化转型的加速,API(应用程序接口)已经成为企业间沟通和数据交换的关键。而在API开发和管理过程中,API文档、调试、Mock和测试的协作显得尤为重要。Apipost正是这样一款一体化协作平台,旨在解决这些问题&#xf…

阿里内推强推的并发编程学习笔记,原理+实战+面试题,面面俱到!

并发编程 谈到并发编程,可能很多人都有过经验,甚至比我了解的更多。 那么并发与并行的区别又是什么? 并发编程是编程中的核心问题,实践中,当人们希望利用计算机处理一些现实世界问题,以及希望同时处理多…

使用DelayQueue的实现延时任务

1、背景 项目中经常会用到类似一些需要延迟执行的功能,比如缓存。java提供了DelayQueue来很轻松的实现这种功能。Delayed接口中的getDelay方法返回值小于等于0的时候,表示时间到达,可以从DelayQueue中通过take()方法取的到期的对象。到期对象…

电液比例负载控制变量泵PQ放大器

对驱动执行元件,仅供应所需最小限度的压力、流量的节能型泵控制系统。与专用功率放大器配合使用。流量和全截流压力按功率放大器的输入电流成比例地进行控制。在实际应用中,该控制系统与专用功率放大器配合使用,可以根据实际需求,…

Python学习基础笔记七十五——Python调用其他程序

Python经常被用来开发自动化程序。自动化程序往往需要调用其他的程序。 例如,我们可以代码中调用wget程序,而不是自己开发下载的代码。 这就是我们经常做的,在我们的Python程序中调佣其它程序,帮我们实现功能。 Python中调用外部…

python项目之网上商城的设计与实现(vue+django)

项目简介 网上商城的设计与实现实现了以下功能: 网上商城系统的开发设计按照系统应用功能划分分为了前端用户和后台用户。 通过网站平台实现首页商品信息的查看,同时可以结合需求进行在线的商品信息搜索,也可以按照系统首页提供的商品类别按…

什么是CSGO大行动,2023年CSGO大行动时间预测

什么是CSGO大行动,2023年CSGO大行动时间预测 什么是CSGO大行动,2023年CSGO大行动时间预测 那天群里在提大行动,不明所以的新同学在问,什么是大行动,是不是官方红锁大行动要来了?当然不是,别自己…

Windows/Linux系统ftp服务器搭建

文章目录 一、Windows系统ftp服务器搭建二、Linux系统ftp服务器搭建二、安装完成测试 一、Windows系统ftp服务器搭建 系统是2008r2,全图,按照图一步一步点就行了 找个有telnet的电脑测试一下端口,windows的ftp默认端口是21 返回…

常用的自动化测试框架

无论是在自动化测试实践,还是日常交流中,经常听到一个词:框架。之前学习自动化测试的过程中,一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料,加上自己的一些实践,算是对“框架”…

微机原理——汇编指令(上部)

文章目录 一、8086/8088 16位微处理器内部结构二、汇编指令集指令概述1、指令2、指令的分类3、指令的组成4、指令的存放 标志寄存器1、C标志——进位/借位标志2、A标志——辅助进位/辅助进位标志3、S标志——符号标志4、Z标志——零标志5、P标志——奇偶标志6、O标志——溢出标…

Leetcode 142 环形链表II(链表:快2慢1指针相遇即有环)

Leetcode 142 环形链表II(链表:快2慢1指针相遇即有环) 解法1 https://leetcode.cn/problems/linked-list-cycle-ii/description/ 解法1 🔴1.【有无环】快慢指针,快指针每次走两步,慢指针每次走一步&#xf…

通过开发者工具-网络排查响应时间过长的问题

关键词:network 网络 pending 开发者工具 有时候我们会发现某次http请求花费了很长时间,比如会花费十几秒,那么我们可以通过开发者工具的网络和其他一些工具来分析请求时间过长的原因 Dev Tool 中时间线各阶段代表的意义 分别用edge、chorm…

单链表经典OJ题:反转链表

题目: 给你单链表的头节点 head ,i请你反转链表,并返回反转后的链表。 图例: 分析: 根据链表的特征,反转链表的本质便是改变节点内部的指针方向。 将原先指向下一个节点的指针进行修改,将其的…

正点原子嵌入式linux驱动开发——Linux蜂鸣器

蜂鸣器驱动原理 有源蜂鸣器只要通电就会叫,所以可以做一个供电电路,这个供电电路通过一个IO来控制其通断 ,一般使用三极管来搭建这个电路。 在Linux下编写蜂鸣器驱动就需要以下工作: 设备树中创建蜂鸣器节点,加入GP…

【MySQL系列】- SELECT语句执行顺序

【MySQL系列】- SELECT语句执行顺序 文章目录 【MySQL系列】- SELECT语句执行顺序一、MYSQL逻辑查询处理的步骤图二、MYSQL执行顺序详解2.1 执行FROM操作2.2 应用ON过滤器2.3 JOIN外部行2.4 应用WHERE过滤器2.5 GROUP BY分组2.6 应用ROLLUP 或 CUBE2.7 HAVING过滤2.8 处理SELEC…