增加并发数后,TPS增加, IOPS却下降 现象分析

当增加并发后, tps会增加, 那系统iops是增加还是减少呢?

我第一反应是增加, 毕竟事务变多了, 写的数据肯定多了卅, 那iops肯定增加卅.

如下是我测试的只写事务.

环境

主机: CVM 4C8G centos7.6 PAGESIZE=4096

数据库: mysql 5.7.38

数据库关键参数:

innodb_flush_log_at_trx_commit = 1

autocommit = ON

innodb_buffer_pool_size = 4.5G

innodb_log_buffer_size = 64M

innodb_page_size=16K

测试工具: sysbench 1.0.17

表数据量: 10*100000

注: 为了方便观察, 仅压测只写事务

现象复现

仅增加并发数量, 观察tps 和 iops

每次压测前都重启了数据库(也可以truncate相关的表)

(注意: 压测工具和数据库在同一台服务器上,对性能有影响, 但不影响本次实验)

(root@127.0.0.1) [(none)]> select * from sys.io_global_by_wait_by_latency where event_name in ('sql/binlog','innodb/innodb_data_file','innodb/innodb_log_file') order by 2 desc ;
+-------------------------+-------+---------------+-------------+-------------+--------------+---------------+--------------+------------+------------+-----------+-------------+---------------+-------------+
| event_name              | total | total_latency | avg_latency | max_latency | read_latency | write_latency | misc_latency | count_read | total_read | avg_read  | count_write | total_written | avg_written |
+-------------------------+-------+---------------+-------------+-------------+--------------+---------------+--------------+------------+------------+-----------+-------------+---------------+-------------+
| innodb/innodb_data_file |  1506 | 100.97 ms     | 67.05 us    | 67.56 ms    | 7.11 ms      | 23.27 ms      | 70.59 ms     |       1284 | 22.08 MiB  | 17.61 KiB |          87 | 50.59 MiB     | 595.49 KiB  |
| innodb/innodb_log_file  |    27 | 4.84 ms       | 179.22 us   | 1.60 ms     | 43.08 us     | 65.03 us      | 4.73 ms      |          7 | 68.50 KiB  | 9.79 KiB  |           4 | 2.00 KiB      | 512 bytes   |
| sql/binlog              |    21 | 2.27 ms       | 108.22 us   | 1.17 ms     | 5.75 us      | 14.62 us      | 2.25 ms      |          4 | 611 bytes  | 153 bytes |           2 | 194 bytes     | 97 bytes    |
+-------------------------+-------+---------------+-------------+-------------+--------------+---------------+--------------+------------+------------+-----------+-------------+---------------+-------------+
3 rows in set (0.01 sec)

(root@127.0.0.1) [(none)]> 

4并发

TPS: 800

WIOPS: 3200

8并发

TPS 1200

WIOPS 3000

80并发

TPS 1500

WIOPS 800 (有波动)

800并发

TPS 1400

WIOPS 250

(是不是和想象的不一样....)

原因分析

汇总下: 并发数增多后, innodb/innodb_log_file 事件反而减少了, 但是平均延迟却增大了, 每次写入的数据量也增大了.

因为innodb_flush_log_at_trx_commit =1, 也就是每次事务提交前都要刷盘, 每次刷盘是把整个innodb_log_buffer都写入redo里面(包括其它事务), 所以并发增加后, 每次刷盘所包含的事务也就更多了(total次数减少), 数据量也大了(avg_written增大). 宏观来看就是写iops减少了. 那是不是并发越多性能越好呢, 肯定不是卅, 本次实验800并发的时候TPS已经开始降下来了, 连接本身占用的资源就多, 应该是个正态分布.

详情如下:

结论

仅针对本次实验

并发数越多, IO利用率越高(iops越低). 主要是redo log的原因.

参考文章

https://mp.weixin.qq.com/s/7u0Tmy1F_3TGBhzvBrwMWw

原文地址:https://cloud.tencent.com/developer/article/2017294

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340