技术标签: MySQL sysbench 基准测试 服务器 mysql
因为公司技术部是小作坊规模,没有专业的数据库管理员和专业的运维人员,所以这些就是我后端的工作,所以我就自己瞎搞,但是总感觉至少要对数据库在当前的硬件条件和配置下有一个基本的性能有个了解,网上找了很多博文,有的版本过老,但是各有可参考的价值,我这里根据自己的需求写一份,主要是安装,使用,和测试目标
一.测试目标
1.获取性能参数
2.网络对性能影响(因为公司服务器不是都在一个局域网内,有的程序需要外网访问数据库)
二.mysql硬件环境及软件版本
服务器类型:华为云服务器
硬件参数: CPU:4核 内存:8G 系统盘:80G 挂载盘:3T
MySQL版本:5.7.26 (安装可以自行百度)
三.sysbench 安装
这个是获取最新新的版本,这种安装比较方便
yum install sysbench
通过:sysbench --version 查看是否安装成功
sysbench 参数说明请查看这篇博文:https://blog.51cto.com/bilibili/2173243
四.测试
1.测试数据准备
sysbench /usr/share/sysbench/oltp_read_write.lua --time=180 --mysql-host=192.168.100.127 --mysql-port=33506 --mysql-user=test --mysql-password=123456 --mysql-db=pcms --table-size=500000 --tables=15 --threads=8 prepare
2.开始测试
局域网内测试
sysbench /usr/share/sysbench/oltp_read_write.lua --time=180 --mysql-host=127.0.0.1 --mysql-port=43306 --mysql-user=test --mysql-password=123456 --mysql-db=test --table-size=500000 --tables=15 --threads=15 --report-interval=10 run >> /tmp/sysbenchMysql.log
sysbench 1.0.17 (using bundled LuaJIT 2.1.0-beta2)
Running the test with following options:
Number of threads: 15
Report intermediate results every 10 second(s)
Initializing random number generator from current time
Initializing worker threads...Threads started!
[ 10s ] thds: 15 tps: 1000.31 qps: 20024.55 (r/w/o: 14019.07/4003.35/2002.13) lat (ms,95%): 23.52 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 15 tps: 1133.51 qps: 22677.94 (r/w/o: 15874.26/4536.65/2267.02) lat (ms,95%): 20.37 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 15 tps: 1222.80 qps: 24450.38 (r/w/o: 17114.76/4890.12/2445.51) lat (ms,95%): 18.61 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 15 tps: 1239.30 qps: 24794.12 (r/w/o: 17355.85/4959.58/2478.69) lat (ms,95%): 18.28 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 15 tps: 1258.82 qps: 25175.07 (r/w/o: 17622.96/5034.47/2517.64) lat (ms,95%): 17.95 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 15 tps: 1297.58 qps: 25952.98 (r/w/o: 18166.67/5191.14/2595.17) lat (ms,95%): 17.32 err/s: 0.00 reconn/s: 0.00
[ 70s ] thds: 15 tps: 1299.12 qps: 25974.88 (r/w/o: 18184.14/5192.60/2598.15) lat (ms,95%): 17.01 err/s: 0.00 reconn/s: 0.00
[ 80s ] thds: 15 tps: 1277.58 qps: 25546.23 (r/w/o: 17880.47/5110.61/2555.15) lat (ms,95%): 17.32 err/s: 0.00 reconn/s: 0.00
[ 90s ] thds: 15 tps: 1258.04 qps: 25170.11 (r/w/o: 17621.16/5032.76/2516.18) lat (ms,95%): 17.95 err/s: 0.00 reconn/s: 0.00
[ 100s ] thds: 15 tps: 1291.35 qps: 25826.83 (r/w/o: 18077.45/5166.69/2582.69) lat (ms,95%): 17.32 err/s: 0.00 reconn/s: 0.00
[ 110s ] thds: 15 tps: 1236.71 qps: 24738.07 (r/w/o: 17315.99/4948.55/2473.53) lat (ms,95%): 17.95 err/s: 0.00 reconn/s: 0.00
[ 120s ] thds: 15 tps: 1317.98 qps: 26355.11 (r/w/o: 18449.73/5269.52/2635.86) lat (ms,95%): 16.71 err/s: 0.00 reconn/s: 0.00
[ 130s ] thds: 15 tps: 1299.33 qps: 25991.09 (r/w/o: 18192.69/5199.74/2598.67) lat (ms,95%): 17.01 err/s: 0.00 reconn/s: 0.00
[ 140s ] thds: 15 tps: 1282.60 qps: 25646.41 (r/w/o: 17953.53/5127.68/2565.19) lat (ms,95%): 17.32 err/s: 0.00 reconn/s: 0.00
[ 150s ] thds: 15 tps: 1304.99 qps: 26103.03 (r/w/o: 18271.31/5221.75/2609.97) lat (ms,95%): 17.01 err/s: 0.00 reconn/s: 0.00
[ 160s ] thds: 15 tps: 1325.80 qps: 26509.77 (r/w/o: 18557.55/5300.61/2651.61) lat (ms,95%): 16.71 err/s: 0.00 reconn/s: 0.00
[ 170s ] thds: 15 tps: 1281.29 qps: 25630.90 (r/w/o: 17941.26/5127.06/2562.58) lat (ms,95%): 17.63 err/s: 0.00 reconn/s: 0.00
[ 180s ] thds: 15 tps: 1307.89 qps: 26155.60 (r/w/o: 18309.19/5230.74/2615.67) lat (ms,95%): 17.01 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 3169138
//总select数量
write: 905468
//总update、insert、delete语句数量
other: 452734
//commit、unlock tables以及其他mutex的数量
total: 4527340
transactions: 226367 (1257.48 per sec.)
//通常需要关注的数字(TPS)
queries: 4527340 (25149.53 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)General statistics:
total time: 180.0153s
//即max-time指定的压测实际
total number of events: 226367
//总的事件数,一般与transactions相同
Latency (ms):
min: 3.97
avg: 11.93
//95%的语句的平均响应时间
max: 230.39
95th percentile: 17.95
sum: 2699503.77Threads fairness:
events (avg/stddev): 15091.1333/33.63
execution time (avg/stddev): 179.9669/0.01
外网测试
sysbench /usr/share/sysbench/oltp_read_write.lua --time=180 --mysql-host=130.12.22.12--mysql-port=6306 --mysql-user=test --mysql-password=123456--mysql-db=test --table-size=500000 --tables=15 --threads=15 --report-interval=10 run >> /tmp/sysbenchMysql.log
外网ping 数据库服务器结果
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 15
Report intermediate results every 10 second(s)
Initializing random number generator from current time
Initializing worker threads...Threads started!
[ 10s ] thds: 15 tps: 23.09 qps: 476.78 (r/w/o: 336.01/93.18/47.59) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 15 tps: 23.30 qps: 470.32 (r/w/o: 330.31/93.30/46.70) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 15 tps: 22.80 qps: 453.00 (r/w/o: 315.50/92.10/45.40) lat (ms,95%): 846.57 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 15 tps: 24.00 qps: 478.00 (r/w/o: 335.10/94.80/48.10) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 15 tps: 23.80 qps: 474.00 (r/w/o: 331.70/94.70/47.60) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 15 tps: 23.70 qps: 476.80 (r/w/o: 333.90/95.40/47.50) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
[ 70s ] thds: 15 tps: 23.70 qps: 474.20 (r/w/o: 331.80/95.00/47.40) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
[ 80s ] thds: 15 tps: 23.80 qps: 476.40 (r/w/o: 333.30/95.50/47.60) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
[ 90s ] thds: 15 tps: 23.80 qps: 475.50 (r/w/o: 333.00/95.10/47.40) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
[ 100s ] thds: 15 tps: 23.60 qps: 473.10 (r/w/o: 331.20/94.60/47.30) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
[ 110s ] thds: 15 tps: 23.90 qps: 477.90 (r/w/o: 334.60/95.40/47.90) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
[ 120s ] thds: 15 tps: 23.70 qps: 471.40 (r/w/o: 329.70/94.50/47.20) lat (ms,95%): 707.07 err/s: 0.00 reconn/s: 0.00
[ 130s ] thds: 15 tps: 23.90 qps: 477.80 (r/w/o: 334.50/95.30/48.00) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
[ 140s ] thds: 15 tps: 24.00 qps: 478.70 (r/w/o: 334.60/96.20/47.90) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
[ 150s ] thds: 15 tps: 23.60 qps: 476.10 (r/w/o: 333.60/95.30/47.20) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
[ 160s ] thds: 15 tps: 23.60 qps: 472.20 (r/w/o: 331.70/93.20/47.30) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
[ 170s ] thds: 15 tps: 23.90 qps: 476.10 (r/w/o: 332.80/95.60/47.70) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
[ 180s ] thds: 15 tps: 24.10 qps: 480.30 (r/w/o: 335.10/96.90/48.30) lat (ms,95%): 694.45 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 59892
write: 17112
other: 8556
total: 85560
transactions: 4278 (23.68 per sec.)
queries: 85560 (473.61 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)General statistics:
total time: 180.6521s
total number of events: 4278Latency (ms):
min: 543.21
avg: 632.34
max: 1634.02
95th percentile: 694.45
sum: 2705150.07Threads fairness:
events (avg/stddev): 285.2000/24.38
execution time (avg/stddev): 180.3433/0.18
3.测试结果对比(关键数据对比)
局域网 | 外网 | |
transactions | 226367 (1257.48 per sec.) | 4278 (23.68 per sec.) |
queries | 4527340 (25149.53 per sec.) | 85560 (473.61 per sec.) |
avg(ms) | 11.93 | 632.34 |
4.对应目标结论
1)测试结果的性能数据基本满足当前业务,和一段时间内业务增长后的性能需求。
2)远程连接数据库对性能有很大的影响,所以高并发的服务还是放在局域网内。
四.结论
sysbench 基准测试结果并不能完全衡量一个系统的性能,可以作为一种对比的参照,比如硬件差别,系统配置差异(比如mysql的配置文件,可以不断调整配置参数,通过sysbench检测差异),网络差异等因素带来的影响。预估mysql的性能与业务需求的性能,作为一种简单,快捷,成本低的参考数据来源。这些都是一些个人之见,这些测试都是为了当前工作需要,随着公司的发展,会聘请专业人士解决,毕竟这个测试涉及知识层面太过于浅薄。
文章浏览阅读1.3w次,点赞2次,收藏22次。想着用python绘制某目录的树状图,一开始想到了用grapgviz,因为去年离职的时候整理文档,用graphviz画过代码调用结构图。graphviz有一门自己的语言DOT,dot很简单,加点加边设置属性就这点东西,而且有python接口。我在ubuntu下,先要安装graphviz软件,官网有deb包,然后python安装pygraphviz模块。目标功能是输入一个路径,输出该路径下的_networkx画树状图
文章浏览阅读899次。绿色求索T1设备资产通 1.5 单机版 [企业管理高价值设备资产的使用情况]下载软件大小:5.56MB软件语言:简体中文软件类别:软件授权:免费软件更新时间:2013-08-03 07:44:00应用平台:Win2K,WinXP,Win2003,Vista,Win7绿色软件下么官方地址:系统之家官网求索T1设备资产通 1.5 单机版 _求索t1设备资产通系统(单机版)注册码
文章浏览阅读195次。课程目标16天,每天6节课,每节40分钟课堂实录,带你征服C语言,让所有学过和没有学过C语言的人,或是正准备学习C语言的人,找到学习C语言的不二法门。适用人群所有学过和没有学过C语言的人,或是正准备学习C语言的人!
文章浏览阅读618次。xml实体注入问题 https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet#SAXBuilder_xml注入 内容注入
文章浏览阅读204次。CRM就是关于客户与公司销售团队之间的客户关系管理,它是一个销售人员管理工具。作为一个工具型产品,CRM能减少更多的人为错误,提高工作效率,从而达到更好的营收。如果在使用CRM期间出现以下现象:不能从不同潜在客户来源中获取潜在客户,不能将潜在客户转化为销售订单,不能提供合适的销售渠道,不能提高销售人员的工作效率。说明你使用的CRM存在问题。如何判断CRM是否有效?为了检查CRM的有效性,销售人员可以对捕获到的潜在客户和具体需求进行跟踪。销售人员能够判断这个潜在客户是否值得做进一步的跟进,或者是否应该放_crm如何判断会员唯一性
文章浏览阅读617次,点赞2次,收藏3次。1.第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。2. 第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。3.第三范式:任何非主属性不依赖于其它非主属性。在实际的开发中需要考虑诸多问题,如:考虑商业化的需求和目标(成本,用户体验),数据库的性能更加重要在规范性能问题的时候,需要适当地考虑一下规范性有时候会故意给某些表增加一些冗余的字段(多表查询→单表查询)_怎么理解第三范式
文章浏览阅读63次。转自:http://www.jeasyui.net/tutorial/23.html本实例演示如何取得选中行数据。数据网格(datagrid)组件包含两种方法来检索选中行数据:getSelected:取得第一个选中行数据,如果没有选中行,则返回 null,否则返回记录。getSelections:取得所有选中行数据,返回元素记录的数组数据。创建数据网格(DataGrid)<..._easyui 获取table选中的一行的值
文章浏览阅读1k次。每天琐事缠身,查错、维护、开接口?——不,你可以更加富有创造力!假期千里迢迢飞回公司机房处理一个小故障?——不,你可以更加自由高效!如果这就是你的写照,那为什么不选择上云呢?如果要上云,那为什么不选择华为云呢?云上秘籍第三弹——超详细、超全面的金蝶EAS Cloud部署教程来啦!负载均衡?WEB安全?一篇文章全部搞定!最后,请大家相信我们华为云生态 ISV团队的诚意和实力,谢谢!_云上部署含带宽
文章浏览阅读640次。导读:本文主要介绍京东在构建OLAP从无到有各环节考虑的重点,由需求场景出发,剖析当前存在的问题,并提供解决方案,最后介绍OLAP的发展过程。▌需求场景1. 京东数据入口① 业务数据:订单..._京东 风控flink实践之路
文章浏览阅读1.4k次,点赞3次,收藏17次。QMl是一种高效的开发UI 的语言。QML(Qt Meta-Object Language,Qt元对象语言)是一种声明式编程语言,并且它是Qt框架的一个组成部分。Action 对应QAction,提供能够绑定到导航和视图的抽象的用户界面动作。StackView 对应QStackedWidget,提供基于栈的层叠布局。TabView 对应QTabWidget,提供带有标签的基于栈的层叠布局。TabView 对应QTabWidget,提供带有标签的基于栈的层叠布局。_qt c++ qml
文章浏览阅读8.9k次,点赞12次,收藏100次。详述GPS原理及RTK技术应用,包括四大卫星定位系统,GPS系统组成:GPS空间部分、地面监控系统和GPS信号接收器(GPS卫星定位车载终端);GPS定位技术(WGS-84坐标系),GPS定位原理(绝对定位原理,相对定位原理,静态相对定位,动态相对定位);GPS实时动态定位技术RTK的工作原理以及基准站和流动站组成,GPS实时差分定位RTK技术的缺点,移动站的解算状态;GPS网络RTK技术(VRS系统)组成和原理,作业优势,还有GPS_NMEA 0183协议相关语句介绍。_rtk与gps数据的融合过程
文章浏览阅读2.3w次,点赞103次,收藏800次。Css (层叠样式表)是种格式化网页的标准方式, 用于控制设置网页的样式,并且允许CSS样式信息与网页内容(由HTML语言定义)分离的一种技术。_css