栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

benchmark学习笔记(第三篇)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

benchmark学习笔记(第三篇)

目录

一、基准测试的方法

1.避免一些常见错误

2. 设计和规划基准测试

3. 获取系统性能和状态

4.获得准确的测试结果

5. 运行基准测试并分析结果

6. 绘图的重要性

二、 基准测试工具

1. 集成测试工具

2. 单组件式测试工具

三、benchmark的使用

1.sysbench使用举例

(1)准备数据

(2)执行测试

(3)清理数据

2、测试结果


一、基准测试的方法

1.避免一些常见错误
  • 只使用部分数据。例如应用需要处理几百GB的数据,但测试只使用1GB数据;或者只使用当前数据进行测试,却希望模拟未来业务大幅增长后的情况。
  • 使用错误的数据分布。例如使用均匀分布的数据测试,而系统的真实数据有很多热点区域(随机生成的测试数据通常无法模拟真实的数据分布)。
  • 使用不真实的分布参数,假定所有用户的个人信息都会平均的读取。
  • 在多用户的场景中,只做单用户的测试。
  • 在单服务器上测试分布式应用。
  • 与真实用户行为不匹配。例如Web页面中的”思考时间“。真实用户在请求道一个页面后,会阅读一段时间,而不是不停顿的一个接一个点击相关链接。
  • 反复执行同一个查询。真实的查询时不尽相同的,这可能导致缓存命中率降低。而繁芜执行同一个查询,在某种程度上,会全部或者部分缓存结果。
  • 没有检查错误。如果测试的结果无法得到合理的解释,比如一个本应该是很慢的查询突然变快了,就应该检查是否是有错误产生。基准测试后,一定要检查一下错误日志,这是基本要求。
  • 忽略了系统预热(warm up)的过程。例如系统重启后马上进行测试。有时候需要了解系统重启后需要多长时间才能达到正常的系统容量,需要特别留意预热的时间。反过来说,如果想分析正常的性能,需要注意,基准测试在重启后马上启动,则缓存是冷的,没有数据,这时候即使测试的压力相同,得到的结果和缓存已经装满数据时是不同的。
  • 使用默认的服务器配置。
  • 测试时间太短。基准测试需要持续一定时间。

只有避免了上述错误,才能走上改进测试质量的漫漫长路。

如果其他条件相同,就应该努力使测试尽可能的真实应用的情况。当然,有时候和实际情况晒为有些出入问题也不打。例如,实际应用服务器和数据库服务器分别部署在不同的机器。如果采用和实际部署完全相同的配置当然更真实,但也会引入更多变化,比如网路负载和速度。在单一节点上运行测试相对容易,在某些情况下结果也可以介绍,那么就在单一节点上进行测试。当然,这样的选择需要根据实际情况来分析是否合适。

2. 设计和规划基准测试

规划基准测试的第一步是提出问题并明确目标。确定是对整个系统还是某一组件进行测试,使用什么样的数据,并准备基准测试及数据收集脚本(CPU使用率、IO、网络流量、状态与计数器信息等)。

3. 获取系统性能和状态

执行基准测试时,需要尽可能的多手机测试系统的信息。最好为基准测试建立一个目录,并且没执行议论测试,都创建单独的子目录,将测试结果、配置文件、测量指标、脚本和其他相关说明保存在其中。及时有些结果目前不需要,也应该保存下来。多余一些数据总比缺乏重要的数据摇号,二多余的数据以后或许用得着。需要记录数据包括系统状态和性能指标,诸如CPU使用率、磁盘I/O、网络流量、应用状态。

4.获得准确的测试结果

获得准确测试结果的最好办法,是回答一些基准测试的基本问题

  • 是否选择了正确的基准测试?
  • 是否为问题收集了相关主句?
  • 是否采用了错误的测试标准(比如是否对一个I/O密集型应用,采用了CPU密集型测试标准)

接着,确认测试结果是否可重复性。每次重新测试前,确保系统状态是一致的。如果是非常重要的测试,需要每次测试都重启系统。如果测试过程修改数据或者schema,那么每次测试前,需要利用快照还原数据。在表中插入1000条和插入100万条记录,测试结果肯定不同。数据碎片度和磁盘上的分布,都可能导致测试时不可重复的。

要注意的因素很多,包括外部的压力、性能分析和监控系统、详细的日志记录、周期性作业。例如,测试过程中突然有cron定时作业启动,或者RAID卡启动了定时的一致性检查。需要确保基准测试过程中所需要的资源是专用于测试的。如果有其他额外的操作,会消耗网络带宽,或者测试基于的是其他服务器共享的SAN存储,那么得到的结果可能是不准确的。

每次测试中,修改的参数应该尽量少。如果必须要一次修改多个参数,那么可能会丢失一些信息。有些参数依赖其他参数,这些参数无法单独修改。有时候甚至没有意识到这些依赖,这给测试带来了复杂性。

5. 运行基准测试并分析结果

基准测试通常需要运行多次。具体需要运行多少次看对结果的计分方式,以及测试的重要程序。一般取最好值或平均值,亦或5次测试中最好的三个值的平均值。

获得测试结果后,需要对结果进行分析,也就是把数字变成知识。最终的目的是回答在设计测试时的问题。

6. 绘图的重要性

简单有效的图形,就是将性能指标按照时间顺序绘制。通过图形可以理解发现一些问题,而这些问题再原始数据中却很难被注意到。或许你会坚持看测试工具打印出来的平均值或其他汇总过的信息,但平均值有时候是没有用的,他会掩盖掉一些实际情况。

二、 基准测试工具

1. 集成测试工具
  • Apache Benchmark(即ab)

只能测试单一域名

  • http_load

可以测试多个域名,并随机选择进行测试

  • JMeter

更复杂,可以设置参数众多,能够更加灵活的monitor真实用户访问,并有绘图接口、还可以对测试进行记录,离线重演测试结果。支持压测多种不同应用。

  • siege

能够模拟比http_load更大的负载,并支持延迟、随机等特性,可以更好的模拟真实用户请求,仅用于Web服务测试。

2. 单组件式测试工具
  • TPCC-MySQL

Percona出品,主流MySQL压测

  • sysbench

主流MySQL压测,支持Lua脚本,同时还支持操作系统和硬件的硬件测试。

 

三、benchmark的使用

1.sysbench使用举例

(1)准备数据

1

sysbench ./tests/include/oltp_legacy/oltp.lua  --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 prepare

其中,执行模式为complex,使用了10个表,每个表有10万条数据,客户端的并发线程数为10,执行时间为120秒,每10秒生成一次报告。

  

 

(2)执行测试

将测试结果导出到文件中,便于后续分析。

1

sysbench ./tests/include/oltp_legacy/oltp.lua  --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 run >> /home/test/mysysbench.log

(3)清理数据

执行完测试后,清理数据,否则后面的测试会受到影响。

1

sysbench ./tests/include/oltp_legacy/oltp.lua  --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 cleanup

2、测试结果

测试结束后,查看输出文件,如下所示:

 其中,对于我们比较重要的信息包括:

queries:查询总数及qps

transactions:事务总数及tps

Latency-95th percentile:前95%的请求的最大响应时间,本例中是344毫秒,这个延迟非常大,是因为使用的MySQL服务器性能很差;在正式环境中这个数值是绝对不能接受的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881016.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号