共倒金荷家万里
English
往期整理
  •   文章分类
  •   文章标签
共倒金荷家万里
Article
44
Category
2
Tags
6
English
往期整理
文章分类
文章标签
work
sysbench安装与测试
Post on: 2024-9-30
Last edited: 2024-9-30
Views
Linux
network
type
status
date
slug
summary
tags
category
icon
password

前言

简介

SysBench 是一个基于 LuaJIT 的可编写多线程基准测试工具。它最常用于数据库基准测试,但也可用于创建不涉及数据库服务器的任意复杂工作负载。并且提供多平台支持,如Linux、Windows(1.0版本后已删除支持)、Macos,Fedora、Debian等其他平台也可以通过源码编译安装。
特性:
  • 提供大量的速率和延迟的统计数据,包括延迟的百分比和柱状图。
  • 即使有成千上万的并发线程,开销也很低。sysbench能够每秒产生和跟踪数以亿计的事件。
  • 通过在用户提供的Lua脚本中实现预定义的钩子,可以轻松创建新的基准。
  • 也可以作为一个通用的Lua解释器,只需在你的脚本中用#!/usr/bin/sysbench替换#!/usr/bin/lua。
本次测试采用GitHub上的最新版安装包,版本号为1.0.20
操作系统版本采用 CentOs7.6 x86_64
测试的数据库:MySQL。

软件安装

Linux

网络安装(yum)

  1. RHEL/CentOS:
  1. Debian/Ubuntu:

离线安装(源码编译安装)

GitHub下载源码包:Tags · akopytov/sysbench · GitHub
依赖环境安装:
  1. RHEL/CentOS:
  1. Debian/Ubuntu:
编译安装:

使用方法介绍

sysbench测试三部曲:
prepare -> run -> cleanup
准备数据(prepare):
例:sysbench /usr/share/sysbench/oltp_read_write.lua --tables=10 --table_size=100000 --mysql-user=root --mysql-password=123123 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-db=sysbench_test prepare
测试数据(run):
例:sysbench /usr/share/sysbench/oltp_read_write.lua --tables=10 --table_size=100000 --mysql-user=root --mysql-password=123123 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-db=sysbench_test run
清理测试数据(cleanup):
例:sysbench /usr/share/sysbench/oltp_read_write.lua --tables=10 --table_size=100000 --mysql-user=root --mysql-password=123123 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-db=sysbench_test cleanup

参数解读

  • -tables 生成的数据表数
  • -table_size 表中数据行数
  • -mysql-db 将要生成测试数据的数据库名
  • -threads: 表示线程数
  • -time: 表示执行时间
  • -mysql-host: 指定数据库IP地址
  • -report-interval: 表示间隔多少秒输出测试信息
  • -mysql-db: 指定测试的数据库
run : 表示运行测试
prepare: 准备测试数据
cleanup: 清理测试数据

测试环境准备

MySQL 5.7

本次测试采用CentOS7.6系统,配置为1C 2G,安装MySQL5.7社区版测试。

测试环境准备

MySQL安装与配置

  1. 配置MySQL yum源
下载MySQL yum源安装包,执行 rpm -ivh mysql80-community-release-el7-3.noarch.rpm
即可成功添加源,编辑/etc/yum.repos.d/mysql-community.repo文件,将测试所需要版本的MySQL源启用,enabled=0为关闭状态,改为enabled=1即为启用。
  1. 安装
mysql -V 检验版本,以免误安装为mariadb。
  1. 启动、初始化配置
  1. 登录MySQL并创建测试库

sysbench生成测试数据

  1. 查找sysbench自带的数据生成脚本
notion image
各个脚本的测试用途:
oltp_read_write:测试数据库的总和读写tps
oltp_read_only:测试数据库的只读性能
oltp_delete: 测试数据库删除性能
oltp_update_index:测试数据库更新索引字段等的性能
oltp_insert: 测试数据库数据插入性能
oltp_write_only:测试数据库的写入性能
oltp_point_select:测试数据库的查询性能
  1. 生成测试数据库数据

执行测试任务

测试结果数值解读

主要参考结果参数:
transactions: 每秒事务总数(tps)
queries: 每秒查询总数 (qps)
95th percentile: 前95%的请求的最大响应时间

清除测试数据

测试方案

1. 线程数对TPS和QPS的影响

测试线程数对TPS和QPS的影响,所以将测试线程数定为1,2,4,8,16,32,64,128,256分别测试,测试结果绘制出折线图观察变化情况。
1.1 首先生成测试文件:
1.2 编写测试脚本:
1.3 正式测试将结果输出到 thread.log文件中,方便关键数据取出。
bash thread.sh > thread.log
!!!
发现测试进程在线程为256时终止报错,经查阅,是由于MySQL默认的最大线程数和最大连接数已经不满足我们的测试。
!!!
解决办法:
修改/etc/my.cnf 文件
添加如下参数:
max_connections=40960
max_prepared_stmt_count=199999
重启MySQL:systemctl restart mysqld
重试解决。
1.4 取出测试结果中的关键数据。
cat thread.log | grep transactions: | awk '{print $3}'
cat thread.log | grep queries: | awk '{print $3}'
1.5 结果图:
notion image

2. 长时间高负载数据库的稳定性

测试命令:
cat runtime.log | grep tps: | awk '{print $2}'
cat runtime.log | grep tps: | awk '{print $7}'
cat runtime.log | grep tps: | awk '{print $9}'
结果图:
notion image
结论:

3. 多表少数据和少表多数据对数据库性能是否有影响

创建多表少数据环境
工作的线程不能在30秒内初始化
测试命令:

测试环境准备

Oracle安装准备

下载地址:https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
安装准备:
配置epel源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  1. 将oracle-database-ee-19c-1.0-1.x86_64 .rpm上传至服务器
rpm -ivh oracle-database-ee-19c-1.0-1.x86_64\ (1).rpm
  1. 安装oracle-database-preinstall-19c包 执行:
/etc/init.d/oracledb_ORCLCDB-19c configure
  1. 经过漫长的等待
notion image
  • Author:共倒金荷家万里
  • URL:https://tangly1024.com/article/11140ef0-3786-803c-9b2a-c39a768823a4
  • Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts
Dify practice
RAGFlow practice
DBMotion deployment
wordpress+mysql+minio development & migrate(on laptop)
datebase deployment(on laptop)
wordpress+mysql+minio development(on cloud service)
ctyun cce交付fio安装与使用
Loading...
Catalog
0%
前言简介软件安装Linux网络安装(yum)离线安装(源码编译安装)使用方法介绍参数解读测试环境准备MySQL 5.7测试环境准备MySQL安装与配置sysbench生成测试数据执行测试任务测试结果数值解读清除测试数据测试方案1. 线程数对TPS和QPS的影响2. 长时间高负载数据库的稳定性3. 多表少数据和少表多数据对数据库性能是否有影响测试环境准备Oracle安装准备
共倒金荷家万里
共倒金荷家万里
何日把酒言欢
Article
44
Category
2
Tags
6
Latest posts
RAGFlow practice
RAGFlow practice
2025-4-7
Dify practice
Dify practice
2025-4-7
DBMotion deployment
DBMotion deployment
2024-12-10
datebase deployment(on laptop)
datebase deployment(on laptop)
2024-11-8
mysql shell migrate mysql
mysql shell migrate mysql
2024-11-6
wordpress+mysql+minio development(on cloud service)
wordpress+mysql+minio development(on cloud service)
2024-11-6
Announcement
实践是检验真理的唯一标准
 
Catalog
0%
前言简介软件安装Linux网络安装(yum)离线安装(源码编译安装)使用方法介绍参数解读测试环境准备MySQL 5.7测试环境准备MySQL安装与配置sysbench生成测试数据执行测试任务测试结果数值解读清除测试数据测试方案1. 线程数对TPS和QPS的影响2. 长时间高负载数据库的稳定性3. 多表少数据和少表多数据对数据库性能是否有影响测试环境准备Oracle安装准备
2021-2025 共倒金荷家万里.

共倒金荷家万里 | 何日把酒言欢

Powered by NotionNext 4.7.3.