Sysbench:一款好用的Linux性能测试工具

网络 2024-01-26 09:05:27电脑知识
49

1. 前言

Sysbench是一个开源的系统基准测试工具,用于评估和比较不同硬件和软件配置的性能。它支持多种测试场景,包括CPU、内存、磁盘、网络等,可以生成详细的性能报告,帮助用户了解系统瓶颈和优化方向。本文主要讲解如何使用sysbench这款软件对Linux服务器进行基准测试,有需要的朋友可以参考下。

Sysbench.jpg

Sysbench的主要特点:

  • 多平台支持:Sysbench支持多种操作系统,如Linux、Windows、macOS等。

  • 多场景测试:Sysbench支持CPU、内存、磁盘、网络等多种测试场景,可以全面评估系统的性能。

  • 可定制的测试参数:Sysbench允许用户自定义测试参数,如测试时间、线程数、操作类型等,以满足不同的测试需求。

  • 性能报告:Sysbench可以生成详细的性能报告,包括平均值、中位数、99%分位数等统计指标,帮助用户了解系统性能和瓶颈。

  • 压力测试:Sysbench可以对系统进行压力测试,模拟高负载场景,评估系统的稳定性和性能。

  • 安装方便:Sysbench可以通过源码编译或包管理器安装,安装过程简单易用。

 

sysbench.jpeg

2. 基准测试与压力测试

基准测试可以理解为针对系统的一种压力测试。但基准测试不关心业务逻辑,更加简单、直接、易于测试,数据可以由工具生成,不要求真实;而压力测试一般考虑业务逻辑(如购物车业务),要求真实的数据。

3. 基准测试的作用

对于多数Web应用,整个系统的瓶颈在于数据库;原因很简单:Web应用中的其他因素,例如网络带宽、负载均衡节点、应用服务器(包括CPU、内存、硬盘灯、连接数等)、缓存,都很容易通过水平的扩展(俗称加机器)来实现性能的提高。而对于MySQL,由于数据一致性的要求,无法通过增加机器来分散向数据库写数据带来的压力;虽然可以通过前置缓存(Redis等)、读写分离、分库分表来减轻压力,但是与系统其它组件的水平扩展相比,受到了太多的限制。

而对数据库的基准测试的作用,就是分析在当前的配置下(包括硬件配置、OS、数据库设置等),数据库的性能表现,从而找出MySQL的性能阈值,并根据实际系统的要求调整配置。

4. 基准测试的指标

数据库指标

  • TPS/QPS:衡量吞吐量。

  • 响应时间:包括平均响应时间、最小响应时间、最大响应时间、时间百分比等,其中时间百分比参考意义较大,如前95%的请求的最大响应时间。。

  • 并发量:同时处理的查询请求的数量。

5. 基准测试的分类

对MySQL的基准测试,有如下两种思路:

  • 针对整个系统的基准测试:通过http请求进行测试,如通过浏览器、APP或postman等测试工具。该方案的优点是能够更好的针对整个系统,测试结果更加准确;缺点是设计复杂实现困难。

  • 只针对MySQL的基准测试:优点和缺点与针对整个系统的测试恰好相反。

在针对MySQL进行基准测试时,一般使用专门的工具进行,例如mysqlslap、sysbench等。其中,sysbench比mysqlslap更通用、更强大,且更适合Innodb(因为模拟了许多Innodb的IO特性),下面介绍使用sysbench进行基准测试的方法。

6. 安装sysbench

安装Sysbench:可以通过源码编译或使用包管理器安装Sysbench。例如,在Ubuntu系统上,可以使用以下命令安装:

sudo apt-get update sudo apt-get install sysbench

配置Sysbench:Sysbench的配置文件通常位于/etc/sysbench.conf,用户可以根据需要修改配置文件中的参数。

运行Sysbench测试:使用以下命令运行Sysbench测试:

sysbench [test_type] [options]

其中,test_type为测试类型,如cpu、memory、disk、network等,options为测试参数,如测试时间、线程数等。

7. 使用sysbench测试系统性能

软件安装完成后,就要开始测试各种性能了,测试的方法官网网站上也提到一些,但涉及到 OLTP 测试的部分却不够准确。在这里我大致提一下:

7.1 cpu性能测试

自己可以根据机器cpu的性能来适当调整数值。如下二图查看CPU配置!

[root@zcwyou~]#cat/proc/cpuinfo

sysbench2.jpeg

sysbench01.png

7.2 执行以下命令,进行CPU测试

[root@zcwyou ~]# sysbench --test=cpu --cpu-max-prime=20000 run

sysbench3.jpeg

sysbench进行CPU测试

cpu测试主要是进行素数的加法运算,在下图例子中,指定了最大的质数发生器数量为 20000,可以看出服务器此次测试 执行时间 大约为10.0005s秒

7.3 线程测试

[root@zcwyou~]#sysbench--test=threads--num-threads=64--thread-yields=100--thread-locks=2run

如下图 (发送64次/个测试线程请求,每次/个线程请求产生/生成100个数量,每个线程的锁数量为2) ,下图的测试执行时间为10.0051s秒

sysbench4.jpeg

sysbench线程测试.png

7.4 内存测试

[root@zcwyou~]#sysbench--test=memory--memory-block-size=8k--memory-total-size=4Grun

上述参数指定了本次测试整个过程是在内存中传输 4G 的数据量,每个 block 大小为 8K。测试结果如下图:

执行时间为0.3844秒,每秒传输速度为10586.47Mb每秒

sysbench5.jpeg

sysbench内存测试

7.5 OLTP测试

[root@zcwyou~]#sysbench--test=oltp--mysql-table-engine=myisam--oltp-table-size=1000000--mysql-socket=/tmp/mysql.sock--mysql-user=test--mysql-host=localhost--mysql-password=testprepare

上述参数指定了本次测试的表存储引擎类型为 myisam,这里需要注意的是,官方网站上的参数有一处有误,即 --mysql-table-engine,官方网站上写的是 --mysql-table-type,这个应该是没有及时更新导致的。另外,指定了表最大记录数为 1000000,其他参数就很好理解了,主要是指定登录方式。测试 OLTP 时,可以自己先创建数据库 sbtest,或者自己用参数 --mysql-db 来指定其他数据库。--mysql-table-engine 还可以指定为 innodb 等 MySQL 支持的表存储引擎类型。

8. 总结

sysbench可以用于CPU、线程、内存、数据库压力测试,是一个综合性能的判断工具,也往往用于判断硬件和系统的稳定性,应该是一款不错的拷机软件。

性能测试工具
THE END
战地网
频繁记录吧,生活的本意是开心

相关推荐