Linux系统压力测试工具(命令行工具)

news/2024/11/6 5:11:52/文章来源:https://www.cnblogs.com/ailiailan/p/18526001

Linux的命令行压力测试工具在做基准测试时很有用,通过基准测试对了解一个系统所能达到的最大性能指标,这些指标可以作为后续性能比较、优化评估的参考依据。

模拟CPU压力:

可以使用stress命令使CPU处于高负载状态。例如,通过stress -c 4命令(-c选项用于指定CPU核心数),会让系统的4个CPU核心都处于高负载运算状态。这对于测试CPU的性能极限以及系统在CPU高负载下的响应能力很有帮助。比如,在测试服务器性能时,通过这种方式可以确定服务器在高CPU负载下是否会出现卡顿或者崩溃的情况。

模拟CPU打满:

#-v 显示版本号
-v, --verbose be verbose
#-q 不显示运行信息
-q, --quiet be quiet
#-n 显示已完成的指令情况
-n, --dry-run show what would have been done
#-t --timeout N 指定运行N秒后停止
#--backoff N 等待N微妙后开始运行
-t, --timeout N timeout after N seconds
--backoff N wait factor of N microseconds before
work starts
#-c 产生n个进程 每个进程都反复不停的计算随机数的
平方根
-c, --cpu N spawn N workers spinning on sqrt()
#-i 产生n个进程 每个进程反复调用sync(),sync()用于
将内存上的内容写到硬盘上

模拟io瓶颈:

fio是一个灵活且功能强大的 Linux I/O(输入 / 输出)性能测试工具。它可以对磁盘、固态硬盘(SSD)、网络存储等各种存储设备进行多种类型的 I/O 操作测试,包括但不限于顺序读写、随机读写、混合读写等,并且能够模拟不同的 I/O 负载场景。

随机读 #fio -name=randread -direct=1 -iodepth=64 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 - runtime=1000 -group_reporting -filename=/dev/sdb随机写 #fio -name=randwrite -direct=1 -iodepth=64 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 - runtime=1000 -group_reporting -filename=/dev/sdb顺序读 #fio -name=read -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=4k -size=1G -numjobs=1 - runtime=1000 -group_reporting -filename=/dev/sdb顺序写 # fio -name=write -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=4k -size=1G

创建初始化fileio文件:
# sysbench --test=fileio --file-num=16 --file-totalsize=2G prepare
接下来开始对这些文件进行测试,使用16个线程随机读
进行测试结果如下:
# sysbench --test=fileio --file-total-size=2G --file-testmode=rndrd --max-time=180 --maxrequests=100000000 --num-threads=16 --init-rng=on --
file-num=16 --file-extra-flags=direct --file-fsync-freq=0 -
-file-block-size=16384 run
测试结束后,记得执行cleanup,以确保测试所产生的文件都已删除:
#sysbench --test=fileio --file-num=16 --file-totalsize=2G cleanup

模拟大流量:

iperf3是一个用于网络吞吐量测量的工具,可以测试 TCP、UDP 或 SCTP 的吞吐量。

客户端
向目的地址10.20.81.33、5002号TCP端口,发一条
TCP流,打印间隔为2s,发包时间为1000s
#iperf3 -c 10.20.81.33 -p 5002 -i 2 -t 1000服务端 
#iperf3 -s -p 5002 -i 2

模拟端口禁用:

查看禁用列表
#iptables -L -n --line-number
禁用出口端口
#iptables -A OUTPUT -p tcp --sport 18004 -j DROP
禁用入口端口
#iptables -A INPUT -p tcp --dport 18004 -j DROP
删除入口端口编号
#iptables -D INPUT 1
删除出口端口编号
#iptables -D OUTPUT 1

Stress工具还提供了对内存,磁盘I/O做压力测试的命令。

Stress-ng是stress的增强版。

Sysbench主要用于数据库服务器(如MySQL)的性能测试,但也可以用于测试系统的CPU、内存和磁盘I/O性能。

 

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

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

相关文章

实景三维赋能森林防灭火指挥调度智慧化

森林防灭火工作是保护森林资源和生态环境的重要任务。随着信息技术的发展,实景三维技术在森林防灭火指挥调度中的应用日益广泛,为提升防灭火工作的效率和效果提供了有力支持。一、森林防灭火面临的挑战森林火灾具有突发性强、破坏性大、蔓延速度快、扑救困难等特点。传统的防…

java中的Math.round(-1.5)等于多少

-1 等于 -1,因为在数轴上取值时,中间值(0.5)向右取整,所以正 0.5 是往上取整,负 0.5 是直接舍弃。(观点不认同) Math提供了三个与取整有关的方法:ceil、floor、round (1)ceil:向上取整; (2)floor:向下取整; (3)round:四舍五入; 1、ceil:向上取整 向上取整…

Electron: 渲染器进程到主进程(双向)

双向IPC的一个常见应用:从渲染器进程代码调用主进程模块并等待结果 【ipcRenderer.invoke】《==============》【ipcMain.handle()】main.js const { app, BrowserWindow, ipcMain, dialog } = require(electron/main) const path = require(node:path)async function handleF…

关于如何根据shp文件筛选csv某个省份数据集

问题描述:现在我有一个中国地图的shp文件和一个全球降水数据的csv文件,我只想要四川省份的降水数据,该如何得到。中国地图 中国全球降雨数据格式点击查看代码 import geopandas as gpd import pandas as pd shp = gpd.read_file(r.\中华人民共和国\中华人民共和国.shp,en…

数据采集作业3

课程链接 https://edu.cnblogs.com/campus/fzu/2024DataCollectionandFusiontechnology作业链接 https://edu.cnblogs.com/campus/fzu/2024DataCollectionandFusiontechnology/homework/13287实验三仓库链接 https://gitee.com/wd_b/party-soldier-data-collection/tree/master…

10分钟快速开发一个监控ASIN的系统-计算引擎

定义数据模型 发布生成表单 Python端直接操作亚马逊amazon# <span data-hook="rating-out-of-text" aria-hidden="true" class="a-size-medium a-color-base">4.5 out of 5</span>if com_amz_x.check_driver_is_exists_by_x_path(…

数据库 PostgreSQL 和 MySQL 开源协议的区别

说到开源数据库,很多人想到了MySQL和PostgreSQL数据库,这是两种比较有名和使用量较多的数据库技术,两者虽然都是开源的,但开源协议是不一样的。 PostgreSQL遵循灵活的开源协议BSD,MySQL使用的是GPL(GNU General Public License)协议,二者有以下区别: 1. 商业使用限制方面…

MySQL8.0安装配置教程【超级详细图解】

万分感谢.参考文章内容:https://blog.csdn.net/m0_73442728/article/details/131359479 万分感谢.参考文章内容:https://blog.csdn.net/qq_40187702/article/details/130618805 目录** 一、MySQL下载与安装 二、MySQL安装 三、MySQL连接测试 四、配置环境变量一、MySQL下载与安…

使用TLE计算轨道并使用Cesium绘制

使用TLE计算轨道并使用Cesium绘制 依赖库satellite.jsnpm install satellite.js实现思路利用satellite.js获取一个轨道周期内的全部轨迹点坐标 使用Cesium的primitive绘制轨迹线完整代码 import { twoline2satrec, propagate, gstime, eciToEcf } from "satellite.js"…

实例化对象有哪几种方式

1. **new 关键字** User user = new User(); 2. **clone() 方法** User clonedUser = originalUser.clone(); 3. **通过反射机制创建** Class<?> cls = Class.forName("com.dao.User"); User u = (User) cls.newInstance(); 4. **序列化反序列化** …

操作字符串都有哪些类以及它们之间有什么区别

1. **String**: - 是不可变对象。每次对 String 类型进行修改时都会生成一个新的对象。 - 适用于不频繁修改字符串的情况。 2. **StringBuilder**: - 线程不安全,效率高,多用于单线程环境。 - 适用于需要频繁修改字符串的操作。 3. **StringBuffer**: - 线程安全…