linux性能中常用压测工具

news2024/11/27 20:25:57

stress工具

stress是Linux的一个压力测试工具,可以对CPU、Memory、IO、磁盘进行压力测试。
安装: sudo yum install stress
命令的使用:

  • -c, --cpu N:产生N个进程,每个进程都循环调用sqrt函数产生CPU压力。

  • -i, --io N:产生N个进程,每个进程循环调用sync将内存缓冲区内容写到磁盘上,产生IO压力。通过系统调用sync刷新内存缓冲区数据到磁盘中,以确保同步。如果缓冲区内数据较少,写到磁盘中的数据也较少,不会产生IO压力。在SSD磁盘环境中尤为明显,很可能iowait总是0,却因为大量调用系统调用sync,导致系统CPU使用率sys 升高。

  • -m, --vm N:产生N个进程,每个进程循环调用malloc/free函数分配和释放内存。
    –vm-bytes B:指定分配内存的大小
    –vm-stride B:不断的给部分内存赋值,让COW(Copy On Write)发生
    –vm-hang N :指示每个消耗内存的进程在分配到内存后转入睡眠状态N秒,然后释放内存,一直重复执行这个过程
    –vm-keep:一直占用内存,区别于不断的释放和重新分配(默认是不断释放并重新分配内存)

  • -d, --hdd N:产生N个不断执行write和unlink函数的进程(创建文件,写入内容,删除文件)
    –hdd-bytes B:指定文件大小

  • –hdd-noclean:不要将写入随机ASCII数据的文件Unlink

  • -t, --timeout N:在N秒后结束程序

  • –backoff N:等待N微秒后开始运行

  • -q, --quiet:程序在运行的过程中不输出信息

  • -n, --dry-run:输出程序会做什么而并不实际执行相关的操作

  • –version:显示版本号

  • -v, --verbose:显示详细的信息
    例如:
    CPU测试
    stress --cpu 2 --timeout 60
    IO测试:
    stress --io 2 --timeout 60s
    Memory测试
    stress --vm 2 --vm-bytes 1G --vm-hang 100 --timeout 100s

sysbench工具

sysbench是跨平台的基准测试工具,支持多线程,支持多种数据库;主要包括以下几种测试:
sysbench是一款压力测试工具,可以测试系统的硬件性能,也可以用来对数据库进行基准测试。sysbench 支持的测试有CPU运算性能测试、内存分配及传输速度测试、磁盘IO性能测试、POSIX线程性能测试、互斥性测试测试、数据库性能测试(OLTP基准测试)。目前支持的数据库主要是MySQL数据库和PG数据库。

yum -y install sysbench
可以进行一定的数据库的压测/
基本语法:
sysbench [options]… [testname] [command]
comman是sysbench要执行的命令,包括:
prepare: 是为了测试提前准备的数据
run: 执行正式的测试
cleanup: 是在测试完成后对数据库进行清理.

常用于数据库的压测使用:
使用的命令:

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-
port=3306 --mysql-user=test_user --mysql-password=test_user --mysql-db=test_db --tables=20 --
table_size=1000000 oltp_read_write --db-ps-mode=disable prepare

上面构造的一个sysbench命令,大致参数的含义:

  1. –db-driver=mysql:这个很简单,就是说他基于mysql的驱动去连接mysql数据库,你要是oracle,或者sqlserver,那自然就是其他的数据库的驱动了
  2. –time=300:这个就是说连续访问300秒
  3. –threads=10:这个就是说用10个线程模拟并发访问
  4. –report-interval=1:这个就是说每隔1秒输出一下压测情况
  5. –mysql-host=127.0.0.1–mysql-port=3306–mysql-user=test user–mysql-password=test user: 这一大串, 就是说连接到哪台机器的哪个端口上的MySQL库,他的用户名和密码是什么
  6. -mysql-db=test db–tables=20–table size=1000000:这一串的意思,就是说在test db这个库里,构造20个测试表,每个测试表里构造100万条测试数据,测试表的名字会是类似于sbtest1,sbtest2这个样子的
  7. oltp_read_write:这个就是说,执行oltp数据库的读写测试
  8. —db-ps-mode=disable:这个就是禁止ps模式
    最后有一个prepare,意思是参照这个命令的设置去构造出来我们需要的数据库里的数据,他会自动创建20个测试表,每个表
    里认建100万条测试数据,所以这个工具是非常的方便的。

ab工具:

ab是Apache超文本传输协议(HTTP)的性能测试工具。它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。
原理:
ab命令创建多个并发访问的线程,模拟多个访问者同时对某个url地址进行访问,
使用:
简单用法:
ab -n 100 -c 10 http://127.0.0.1:8080/

如果需要携带参数,发送post请求,要把参数存到一个文件里,这个文件没有扩展名,使用-p指定
ab -n 2000 -c 200 -k -p ~/postfile -T application/x-www-form-urlencoded http://127.0.0.1:8080/test
在这里插入图片描述

hping3

该工具用于模拟DDOS网络攻击的工具:
端口扫描:
hping3 -I eth1 -S 192.168.180.133 -p 80
syn Flood
默认协议: tcp
默认源端口: 随机
通过ens33 网卡发送syn报文到目标主机,并伪造随机源地址.时间间隔1000us
hping3 -I ens33 -S 192.168.44.11 -p 80 --rand-source -i -u1000

UDP Flood:
发送udp报文到目标地址,伪造源ip,洪水攻击.
sudo hping3 --udp 192.168.180.133 -p 80 --rand-source --flood
sudo hping3 --udp -s 6666 -p 53 -a 29.29.29.29 --flood 192.168.180.133
ICMP Flood:
发送icmp报文:
sudo hping3 --icmp 192.168.180.133 --rand-source --flood
sudo hping3 -q -n -d 200 --icmp --flood -a 28.28.28.28 192.168.180.133
参考文档: https://www.cnblogs.com/Higgerw/p/16469371.html

strace

strace是跟踪进程执行时的系统调用所接收的信号,他会跟踪一个进程产生的系统调用,包括参数,返回值,执行消耗的时间,
基本使用:

-c 统计每一系统调用的所执行的时间,次数和出错的次数等.

-d 输出strace关于标准错误的调试信息.

-f 跟踪由fork调用所产生的子进程.

-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号.

-F 尝试跟踪vfork调用.在-f时,vfork不被跟踪.

-h 输出简要的帮助信息.

-i 输出系统调用的入口指针.

-q 禁止输出关于脱离的消息.

-r 打印出相对时间关于,,每一个系统调用.

-t 在输出中的每一行前加上时间信息.

-tt 在输出中的每一行前加上时间信息,微秒级.

-ttt 微秒级输出.

-T 显示每一调用所耗的时间.

-v 输出所有的系统调用.一些调用关于环境变量,状态,输入输出等调用由于使用频繁,默认不输出.

-V 输出strace的版本信息.

使用: strace 进程名 或者 strace -p pid
能够更加精准的定位出程序中出错的位置.

perf

性能分析工具,能够进行函数级和指令级别的热点查找,用来分析程序中的热点函数的cpu占用率.
主要使用:
perf record : 保存perf追踪的内容,文件名为perf.data
perf report : 解析perf.data
perf record -a --call-graph dwarf -p pid
-a : 表示对所有的cpu采样
–call-graph dward: 表示分析调用栈的关系,
-p 指定分析的进程
结束跟踪会后,生成报文文件,然后执行命令
perf report -i perf.data > perf.txt
然后分析报告,就可以看到cpu使用率高的几个函数,然后根据函数内容确定优化方案.

memleak

专门用来检测内存泄漏的工具,
memleak 可以跟踪系统或指定进程的内存分配,释放请求,然后定期输出一个未释放内存和相应调用栈的汇总情况.(默认5秒)

fio

是在Linux下使用的方便的io测试工具.
安装: yum -y install fio
常用的一些参数:

filename=/dev/emcpowerb 支持文件系统或者裸设备,-filename=/dev/sda2或-filename=/dev/sdb
direct=1                 测试过程绕过机器自带的buffer,使测试结果更真实
rw=randwread             测试随机读的I/O
rw=randwrite             测试随机写的I/O
rw=randrw                测试随机混合写和读的I/O
rw=read                  测试顺序读的I/O
rw=write                 测试顺序写的I/O
rw=rw                    测试顺序混合写和读的I/O
bs=4k                    单次io的块文件大小为4k
bsrange=512-2048         同上,提定数据块的大小范围
size=5g                  本次的测试文件大小为5g,以每次4k的io进行测试
numjobs=30               本次的测试线程为30
runtime=1000             测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止
ioengine=psync           io引擎使用pync方式,如果要使用libaio引擎,需要yum install libaio-devel包
rwmixwrite=30            在混合读写的模式下,写占30%
group_reporting          关于显示结果的,汇总每个进程的信息
此外
lockmem=1g               只使用1g内存进行测试
zero_buffers             用0初始化系统buffer
nrfiles=8                每个进程生成文件的数量

测试场景:

100%随机,100%读, 4K  fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100read_4k

100%随机,100%写, 4K  fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100write_4k

100%顺序,100%读 ,4K  fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100read_4k

100%顺序,100%写 ,4K  fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100write_4k

100%随机,70%读,30%写 4K  fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=randrw_70read_4k

pktgen

pktgen是一个位于linux内核层的高性能网络测试工具,主要用来测试网络驱动与网卡设备,支持多线程,能够产生随机mac地址、IP地址、UDP端口号的数据包,pktgen 的作者使用多CPU处理器在不同的PCI总线(pci 、pcie等总线)上用千兆以太网卡做过测试(pktgen的表现依赖于CPU处理速率、内存延时、pci总线速率等硬件参数),发送数据速率甚至可以大于10GBit/s。可见是可以满足大多数的网卡等测试需求。
现在版本的linux发行版大多加入了pktgen,使用以下命令加载pktgen模块
modprobe pktgen
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Java搭建实战springboot基于若依项目工时统计成本核算管理源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套基于若依开发的springboot项目工时统计成本核算管理源码,该系统是前后端分离的架构,前端使用Vue2,后端使用SpringBoot2。 技术架构 技术框架:Sp…

计算机毕设推荐基于微信小程序的自来水收费系统

💖🔥作者主页:计算机毕设老哥🔥 💖 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 Java实战项目专栏 Python实…

帝国CMS后台登录显示空白解决方法汇总

升级PHP版本由原来5.X切换使用PHP7.*运行环境时会出现登录后台空白的情况,以下两种方法可设置支持PHP7.* 帝国CMS后台登录显示空白解决方法操作步骤: 1、全新安装帝国CMS时: 只需安装时“MYSQL接口类型”选择“mysqli”即可支持PHP7系列。系统会自动识别。 2、已经运行的帝国…

送给python初学者的福利!掌握了这些知识,你将超过80%的小白

前言 Python要学多久才能学会?我没有接触过编程怎么办?这是每一个初学者心中的疑问。 小编曾在网上看到一个帖子: 有一名网友是学金融的,他去上海找工作,看到好多公司都要有 Python 开发经验的,而且工资…

UE5笔记【八】导入FBX网格和和材质到UE5

资源网站:TurboSquid。进入,然后搜索Crate。筛选条件:Free。然后找到这个木箱子。 注册下载时,看到好多3D软件。 点击fbx.zip下载。然后解压到相应目录下。 接下来就是如何导入到UE5中,使用这个素材了。 第一种方式&…

MIT6.824 2022 Raft

MIT6.824 2022 RaftRaftleader electionlogpersistencelog compaction整体测试Raft leader election 不论是访问还是修改Raft可变类成员,都需要加锁 rf.mu.Lock() if rf.state ! Leader {rf.mu.Unlock()return } args : AppendEntriesArgs{Term: rf.currentTerm,…

某网站X-Signature签名破解

网站地址: aHR0cHM6Ly9mc2UuYWdpbGVzdHVkaW8uY24= (b64解密) 先全局搜索X-Signature,跳转到app.xxx.js里,找到X-Signature,发现是对请求参数做了_操作,向上_为d 向上找d, d为一个函数, 跟到这里打印i值(“_platform=web,_ts=1669108721743,_versioin=0.2.5,keyword=…

华为服务体系:ITR流程体系详解

如果开发出了好产品,同时也高效率地将产品交付到客户手中。 但客户最终还是选择投诉,而且复购率低,原因是什么呢? 这就跟ITR流程有关了,在ITR不顺畅的时候,企业可能会面临如下挑战: 客户总是…

Serverless 架构下的 AI 应用开发

作者:阿里云云原生 本篇内容连载自《Serverless 架构下的 AI 应用开发:入门、实战与性能优化》。 Serverless 架构与 CI/CD 工具的结合 CI/CD 是一种通过在应用开发阶段引入自动化流程以频繁向客户交付应用的方法。 如图所示,CI/CD 的核心概…

Vue3中的computed和watch属性

文章目录1. computed计算属性2. watch侦听器属性2.1 watchEffect2.2 watch1. computed计算属性 简写写法&#xff08;只实现了 get &#xff09;&#xff1a; <template><div><ul><li v-for"item of carts" :key"item.id">{{ it…

精华推荐 | 【深入浅出RocketMQ原理及实战】「底层原理挖掘系列」透彻剖析贯穿RocketMQ的存储系统的实现原理和持久化机制

RocketMQ的发展历史 RocketMQ是一个统一消息引擎、轻量级数据处理平台。RocketMQ是一款阿里巴巴开源的消息中间件。 2016 年 11 月 28 日&#xff0c;阿里巴巴向 广西党性培训 Apache 软件基金会捐赠RocketMQ&#xff0c;成为 Apache 孵化项目。 2017 年 9 月 25 日&#xff0…

webpack安装与基础

概念 webpack是一个前端打包工具用它来处理现代前端错综复杂的依赖关系&#xff08;A插件需要B插件B插件有D插件 F插件需要A插件&#xff09;生成浏览器可以识别静态资源Vue 前期脚手架就是用webpack制作&#xff08;Vue 开始推荐vite构建工具&#xff08;更快&#xff09;&am…

[UE][UE5]Gameplay框架,Actor,pawn,playerController(玩家控制器),Character(角色)之间的关系

[UE][UE5]Gameplay框架,actor,pawn,playerController,Character之间的关系Actor,pawn,playerController(玩家控制器),Character(角色)之间的关系Actor&#xff1a;pawn&#xff1a;character&#xff1a;控制器&#xff08;Controller&#xff09;&#xff1a;playerController…

sqlServer如何实现分页查询

sqlServer的分页查询和mysql语句不一样&#xff0c;有三种实现方式。分别是&#xff1a;offset /fetch next、利用max&#xff08;主键&#xff09;、利用row_number关键字 一、offset /fetch next关键字 2012版本及以上才有&#xff0c;SQL server公司升级后推出的新方法。 …

Shiro前后端分离流程

1.自定义filter 拦截所有携带token的请求&#xff0c; 调用自定义realm&#xff0c;判断token是否正确&#xff0c;不正确realm抛出异常&#xff0c;在filter中被捕获&#xff0c;重定向至token不正确界面 重写了三个方法&#xff1a; 1》isAccessAllowed&#xff1a;如果带…

有一个项目管理软件,名字叫8Manage PM!

优秀的软件工具在项目管理中起到极为重要的作用。8Manage PM项目管理软件由高亚科技自主研发&#xff0c;为项目工作提供项目功能、业务功能、服务功能和工具&#xff0c;有力推动项目成功。 8Manage软件项目功能包括完整性管理、需求管理、计划和执行、资源管理、工作量&…

锐捷BGP基础配置

目录 ​编辑 配置IBGP邻居 配置EBGP邻居 BGP其它配置 配置IBGP邻居 R2、R3、R4底层IGP互通&#xff0c;此处IGP互通配置不做介绍 R2与R4通过Loop0建立IBGP邻居&#xff0c;R3与R4通过Loop0建立IBGP邻居 R4充当反射器&#xff0c;R2和R3作为客户端&#xff08;通过反射可以将…

Vue中设置背景图片和透明度

如果文章对你有帮助欢迎【关注❤️❤️❤️点赞&#x1f44d;&#x1f44d;&#x1f44d;收藏⭐⭐⭐】一键三连&#xff01;一起努力&#xff01; 今天来为我自己的项目设置一个好看的登录页面之前是这样的&#xff1a; 乍一看感觉还行&#xff0c;越看越难受&#xff0c;弄一…

Nodejs http模块常用方法

视频链接&#xff1a;黑马程序员Node.js全套入门教程 文章目录http模块1 什么是http模块2 进一步理解http的作用3 服务器相关的概念3.1 IP地址3.2 域名和域名服务器3.3 端口号4 创建简单的web服务器1 步骤2 代码实现3 req请求对象4 res响应对象5 解决中文乱码问题5 简单路由效果…

《Java并发编程之美》读书笔记——ThreadLocalRandom类原理剖析

文章目录1.Random类的局限性2.ThreadLocalRandom3.源码分析Unsafe机制current()方法int nextInt(int bound)方法1.Random类的局限性 在JDK之前包括现在&#xff0c;java.util.Random都是使用比较广泛的随机数生成工具类。 下面我们先来看一下Random的使用方法。 // 创建一个…