分享3个Sysbench性能压测脚本及多并发压测过程
ccwgpt 2024-12-05 12:04 67 浏览 0 评论
概述
sysbench是基于LuaJIT的可以脚本化多线程基准。 它是一个模块化的、跨平台、多线程基准测试工具,最常用于数据库基准测试,但也可以用于创建不涉及数据库服务器的任意复杂工作负载。
目前sysbench主要支持 MySQL,pgsql,oracle 这3种数据库。
今天主要分享一下sysbench常用的一些脚本以及sysbench压测。
一、压测环境
生产环境:
MySQL服务器IP地址:xx.xx.xx.xx
操作系统:CentOS Linux release 7.3.1611 (Core)
CPU:4核
内存:8G
硬盘:普通SAS硬盘
基线测试工具:sysbench
二、相关脚本
1、采集tps的脚本(analyze_tps.sh)
#!/bin/bash cat $1|awk '/10s ]/,/1800s ]/{print $0}'|awk -F '[' '{print $2}'|awk -F ']' '{print $1,$2}'|awk '{print $1,$5}'|awk -F ',' '{print $1}'|awk -F 's' '{print $1 $2}' > $2
脚本的'/10s]/,/1800s] 这2个参数是需要根据实际情况进行更改的,我sysbench采取的是10s计数一次,累计运行1800s,所以统计是从10s开始直到1800s结束;
其中tps的值在过滤之后位于$5的位置,可以直接取出
2、采集qps的脚本(analyze_qps.sh)
#!/bin/bash cat $1|awk '/10s ]/,/1800s ]/{print $0}'|awk -F '[' '{print $2}'|awk -F ']' '{print $1,$2}'|awk '{print $1,$7+$9}'|awk -F ',' '{print $1}'|awk -F 's' '{print $1 $2}' > $2
3、绘图脚本(sysbench-graph.sh)
#!/bin/bash gnuplot << EOP set style line 1 lt 1 lw 3 set style line 2 lt 2 lw 3 set style line 3 lt 3 lw 3 set style line 4 lt 4 lw 3 set style line 5 lt 5 lw 3 set style line 6 lt 6 lw 3 set style line 7 lt 7 lw 3 set terminal png size 960,480 set grid x y set xlabel "Time(sec)" set ylabel "TPS" set output "$2" plot "$1" using 1:2 title "threads=2" ls 1 with lines,\ "$1" using 3:4 title "threads=100" ls 2 with lines,\ "$1" using 5:6 title "threads=200" ls 3 with lines,\ "$1" using 7:8 title "threads=300" ls 4 with lines,\ "$1" using 9:10 title "threads=500" ls 5 with lines,\ "$1" using 11:12 title "threads=800" ls 6 with lines axes x1y1 EOP
三、sysbench压测预演
1、到被测试的库里建库,建用户,授权
set global validate_password_policy=0; ##因为lua脚本里面这里设置的就是sbtest库,库名需要与脚本里的内容保持一致 create database sbtest; grant all privileges on sbtest.* to tpcc@'%' identified by 'tpcc@1234'; flush privileges;
2、会产生报错的操作(将oltp.lua中的mysiam修改成innodb后,会找不到表)--不执行
cd /usr/local/sysbench/share/sysbench/tests/include/oltp_legacy cp oltp.lua oltp_innodb.lua sed -i 's/myisam/innodb/g' /usr/local/sysbench/share/sysbench/tests/include/oltp_legacy/oltp_innodb.lua
3、测试多表的压测
###################################执行prepare########################################## --test=/usr/local/sysbench/share/sysbench/tests/include/oltp_legacy/oltp.lua //表示调用oltp.lua 脚本进行 oltp 模式测试 --oltp_tables_count=20 //20张表 --oltp-table-size=1000000 //每张表100万数据 ####################################################################################### sysbench --mysql-host=172.26.151.69 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc@1234 \ --test=/usr/local/sysbench/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp_tables_count=20 \ --oltp-table-size=1000000 --rand-init=on prepare ###################################执行run############################################### --num-threads=4 //4个并发连接 --max-time=30 //测试时间为30s --report-interval=5 //报告打印周期为5s --oltp-read-only=off //非只读操作测试 --max-requests=0 //最大执行次数这里不做限制,只由max-time进行限制 ######################################################################################### sysbench --mysql-host=172.26.151.69 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc@1234 \ --test=/usr/local/sysbench/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp_tables_count=20 \ --oltp-table-size=1000000 --num-threads=4 --oltp-read-only=off --report-interval=5 --rand-type=uniform \ --max-time=30 --max-requests=0 --percentile=99 run ###################################执行清除################################################## ★重点关注:总的事务数,每秒事务数TPS,QPS,时间统计信息(最大、最小、平均、99%以上语句响应时间)★ ############################################################################################ sysbench --mysql-host=172.26.151.69 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc@1234 \ --mysql-db=sbtest --oltp-tables-count=20 --oltp-table-size=1000000 --num-threads=16 --max-requests=0 \ --max-time=30 --report-interval=1 --test=/usr/local/sysbench/share/sysbench/tests/include/oltp_legacy/oltp.lua cleanup
说明:
read: 154280 //读总数,select语句
write: 44080 //写总数,insert、delete、update语句
other: 22040 //其它语句,如commit等
total: 220400 //总的执行语句数
transactions: 11020 (367.14 per sec.) //总的事务数(★每秒处理事物数:TPS★)
queries:: 220400 (7342.85 per sec.) //读写请求次数(★每秒的读写次数:QPS★)
total time: 30.0133s //总时间
total number of events: 11020 //★事务总数★
min: 6.97ms //最小延迟时间
avg: 10.89ms //平均延迟时间
max: 48.47ms //最大延迟时间
99th percentile:: 21.89ms //99%语句执行时间
Threads fairness: //线程公平性
events (avg/stddev): 2755.0000/91.59 //平均每个线程完成envet的次数,后一个值是标准差
execution time (avg/stddev): 29.9929/0.00 //平均每个线程平均耗时,后一个值是标准差
上面三个脚本后面有大用,建议大家收藏一下。觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
- 上一篇:Oracle的体系结构图万花筒
- 下一篇:oracle数据库trunc函数使用
相关推荐
- 如何使用PIL生成验证码?(pi验证教程)
-
web项目中遇到使用验证码的情况有很多,进行介绍下使用PIL生成验证码的方法。安装开始安装PIL的过程确实麻烦各种问题层出不绝,不过不断深入后就没有这方面的困扰了:windows安装:直接安装Pil...
- Python必学!3步解锁asyncio异步编程 性能直接狂飙10倍!
-
还在用传统同步代码被IO阻塞卡到崩溃?别当“代码苦行僧”了!Python的asyncio模块堪称异步编程的“开挂神器”,处理高并发任务就像开了涡轮增压!不管是网络爬虫、API接口开发还是文件批量处理,...
- Tornado6+APScheduler/Celery打造并发异步动态定时任务轮询服务
-
定时任务的典型落地场景在各行业中都很普遍,比如支付系统中,支付过程中因为网络或者其他因素导致出现掉单、卡单的情况,账单变成了“单边账”,这种情况对于支付用户来说,毫无疑问是灾难级别的体验,明明自己付了...
- Python学习怎么入门?附真实学习方法
-
Python技术在企业中应用的越来越广泛,因此企业对于Python方面专业人才的需求也越来越大,那对于之前对Python没有任何了解和接触的人而言,想要从零开始学习并不是一件容易的事情,接下来小U就为...
- PySpider框架的使用(pyspider 教程)
-
PysiderPysider是一个国人用Python编写的、带有强大的WebUI的网络爬虫系统,它支持多种数据库、任务监控、项目管理、结果查看、URL去重等强大的功能。安装pip3inst...
- 大学计算机专业 学习Python学习路线图(最新版)
-
这是我刚开始学习python时的一套学习路线,从入门到上手。(不敢说精通,哈哈~)希望对大家有帮助哈~大家需要高清得完整python学习路线可以【文末有获取方式】【文末有获取方式】一、Python入门...
- 阿里巴巴打造的400集Python视频合集免费学起来,学完万物皆可爬
-
第一阶段Python入门章节1:Python入门章节2:编程基本概念章节3:序列章节4:控制语句章节5:函数章节6:面向对象编程第二阶段Python深入与提高章节1:异常处理章节2:游戏开发-坦克大...
- Nginx Gunicorn在服务器中分别起什么作用
-
大部分人在gunicorn前面部署一层nginx的时候也的确没有想过为什么,他们只是觉得这样显得他们比较专业,而且幻想着加了一层nginx反向代理之后性能会有提升,恕我直言,请你们带上脑子,一个单纯的...
- Python培训怎么学?Python基础技术总结!值得一看
-
Python培训如今越来越被更多人所接受,相比自学参加Python培训的好处也是显而易见,但Python毕竟属于后端编程开发的主流语言,其知识机构还是比较庞大的,那Python培训怎么学?以及Pyth...
- 使用Tornado部署Flask项目(tornado async)
-
Tornado不仅仅是一个WEB框架,也可以是一个WEB服务器。在Tornado中我们可以使用wsgi模块下的WSGIContainer类运行其他WSGI应用如:Fask,Bottle,Djang...
- Python Web框架哪个好用?(python3 web框架)
-
问:PythonWeb框架哪个好用? 答: 1.Django Django是Python世界中最出名、最成熟的Web框架。Django功能全面,各模块之间结合紧密,(不讲其他的)Djang...
- Vue3.0+Tornado6.1发布订阅模式打造异步非阻塞实时=通信聊天系统
-
“表达欲”是人类成长史上的强大“源动力”,恩格斯早就直截了当地指出,处在蒙昧时代即低级阶段的人类,“以果实、坚果、根作为食物;音节清晰的语言的产生是这一时期的主要成就”。而在网络时代人们的表达欲往往更...
- Python开源项目合集(第三方平台)(python第三方开发工具)
-
wechat-python-sdk-wechat-python-sdk微信公众平台Python开发包http://wechat-python-sdk.readthedocs.org/,非官方...
- IT界10倍高效学习法!用这种方式,一年学完清华大学四年的课程
-
有没有在某一个瞬间,让你放弃学编程刚开始学python时,我找了几十本国内外的python编程书籍学习后,我还是似懂非懂,那些书里面到处都是抽象的概念,复杂的逻辑,这样的书,对于专业开发者来说,在平常...
- 如何将Python算法模型注册成Spark UDF函数实现全景模型部署
-
背景Background对于算法业务团队来说,将训练好的模型部署成服务的业务场景是非常常见的。通常会应用于三个场景:部署到流式程序里,比如风控需要通过流式处理来实时监控。部署到批任务中部署成API服...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 如何使用PIL生成验证码?(pi验证教程)
- Python必学!3步解锁asyncio异步编程 性能直接狂飙10倍!
- Tornado6+APScheduler/Celery打造并发异步动态定时任务轮询服务
- Python学习怎么入门?附真实学习方法
- PySpider框架的使用(pyspider 教程)
- 大学计算机专业 学习Python学习路线图(最新版)
- 阿里巴巴打造的400集Python视频合集免费学起来,学完万物皆可爬
- Nginx Gunicorn在服务器中分别起什么作用
- Python培训怎么学?Python基础技术总结!值得一看
- 使用Tornado部署Flask项目(tornado async)
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- ui自动化框架 (47)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (65)
- tornado框架 (48)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)