GreatSQL社区

搜索

[讨论中] kvm虚拟化下docker方式跑mysql8.0.27性能比greatsql最新版高20%左右

81 7 4 天前
本帖最后由 yunhai1990 于 2025-7-29 16:54 编辑

宿主机器:

kvm虚拟化,内存96G,里面docker运行时的k8s跑了起码得30多个容器,内存倒是即使压测的时候一直没超过50G
用sysbench fio测试磁盘顺序读取5GB/s,顺序写入500MB/S,延迟10ms左右
mysql和greatsql的存储只挂载了配置文件,my.cnf配置几乎相同(不同的是类似pid文件名不同这种,buffer,缓存乱七八糟的都搞成一样的了,没确认是不是都成功加载了)

再用sysbench同机器内压测的时候,cpu基本都能最高占用到1000%,内存倒是都没超过1GB,可能是my.cnf给了很低的配置


sysbench oltp_read_write \
        --mysql-host=10.50.12.50  \
        --mysql-port=31002 \
        --mysql-user=root \
        --mysql-password='1111' \
        --mysql-db=aaa \
        --db-driver=mysql \
        --tables=100 \
        --table-size=70000 \
        --threads=8 \
        prepare


sysbench oltp_read_write \
        --mysql-host=10.50.12.50  \
        --mysql-port=31002 \
        --mysql-user=root \
        --mysql-password='1111' \
        --mysql-db=aaa \
        --db-driver=mysql \
        --tables=100 \
        --table-size=70000 \
        --threads=16 \
        --time=30 \
        run
        
sysbench oltp_read_write \
        --mysql-host=10.50.12.50  \
        --mysql-port=31002 \
        --mysql-user=root \
        --mysql-password='1111' \
        --mysql-db=aaa \
        --db-driver=mysql \
        --tables=100 \
        --table-size=70000 \
        --threads=16 \
        --time=30 \
        cleanup



用的上面的参数做的压测,也试过表的数量是3个的情况,整个一下午分段测试了十几轮,虽然有时候同个库相近两次tps的结果能差50%,但是也确实greatsql的成绩一直要低mysql20%,但是官方说greatsql更高,希望有大佬给指点下是哪里有问题


还有如果我按上述配置做压测,结果是320tps,95%的延迟在50ms以内,这是什么水平,因为用了16线程,代表16个并发能抗住每个并发一次20个tps请求吗?




        #
        # my.cnf example for GreatSQL 8.0.32-27
        #
        # 下面参数选项设置仅作为参考
        #
        [client]
        socket    = /data/GreatSQL/mysql.sock


        [mysql]
        loose-skip-binary-as-hex
        prompt = "(\\D)[\\u@GreatSQL][\\d]> "
        no-auto-rehash


        [mysqld]
        user    = mysql
        port    = 3306
        basedir = /usr/local/GreatSQL
        datadir    = /data/GreatSQL
        socket    = /data/GreatSQL/mysql.sock
        pid-file = mysql.pid
        character-set-server = UTF8MB4
        skip_name_resolve = ON
        default_time_zone = "+8:00"
        bind_address = "0.0.0.0"
        secure_file_priv = /data/GreatSQL


        default_authentication_plugin=mysql_native_password
        sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
        server-id=1
        log-bin=mysql-bin
        group_concat_max_len=102400


        # 华为云导库需要这几个参数
        max_allowed_packet=1073741824
        lower_case_table_names=1
        innodb_strict_mode=OFF


        init_connect='SET NAMES utf8mb4'
        character-set-client-handshake=FALSE
        character-set-server=utf8mb4
        collation-server=utf8mb4_0900_ai_ci


        binlog-format=ROW
        log-slave-updates=ON
        sync_binlog=0
        innodb_flush_log_at_trx_commit=0
        binlog_expire_logs_seconds=2592000


        default-time_zone='+8:00'
        max_connections=5000
        wait_timeout = 28800
        interactive_timeout = 3600


        key_buffer_size=256M
        sort_buffer_size=2M
        read_buffer_size=2M
        innodb_buffer_pool_size=1024M
        tmp_table_size=32M
        max_heap_table_size=64M





全部回复(7)
yejr 4 天前
1、先把下面这两个参数都改成1,也即设置双1
sync_binlog=0
innodb_flush_log_at_trx_commit=0

2、sysbench压测才30秒,这个意义不大,数据都还没预热就结束测试了
一般要求至少持续跑5分钟

3、做完上面调整后,重新测试,然后提供sysbench测试结果(可以上传文本附件)
此外,sysbench增加参数 --report-interval=1

4、补充提供压测期间系统负载数据(可以上传文本附件)(以压测600秒为例,采集以下两个系统负载数据
vmstat -S m 1 600
iostat -dmx 1 600
yunhai1990 4 天前
yejr 发表于 2025-7-29 17:22
1、先把下面这两个参数都改成1,也即设置双1
sync_binlog=0
innodb_flush_log_at_trx_commit=0

压测期间系统负载数据需要哪些,比如top,iostat 或者其他的还需要吗,或者有没有一条命令就能生成的给我介绍介绍
yunhai1990 3 天前
yunhai1990 发表于 2025-7-29 17:49
压测期间系统负载数据需要哪些,比如top,iostat 或者其他的还需要吗,或者有没有一条命令就能生成的给我 ...

测试结果已发

测试外发.zip

258.71 KB, 下载次数: 2, 下载积分: 金币 -1

yejr 3 天前

看了下测试数据,在压测期间的磁盘I/O性能也太差了,和你说的情况不匹配
你说的
  1. 用sysbench fio测试磁盘顺序读取5GB/s,顺序写入500MB/S,延迟10ms左右
复制代码



磁盘I/O数据

  1. Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wMB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dMB/s   drqm/s  %drqm d_await dareq-sz  aqu-sz  %util
  2. vda              0.00      0.00     0.00   0.00    0.00     0.00  876.00     23.61   515.00  37.02    1.72    27.60    0.00      0.00     0.00   0.00    0.00     0.00    0.93  80.40
  3. vda              0.00      0.00     0.00   0.00    0.00     0.00  229.00      6.02   247.00  51.89    6.34    26.92    0.00      0.00     0.00   0.00    0.00     0.00    1.32  78.00
  4. vda              0.00      0.00     0.00   0.00    0.00     0.00  214.00      3.05   151.00  41.37    9.66    14.58    0.00      0.00     0.00   0.00    0.00     0.00    1.95  69.60
  5. vda              0.00      0.00     0.00   0.00    0.00     0.00  162.00      2.29   102.00  38.64    9.39    14.47    0.00      0.00     0.00   0.00    0.00     0.00    1.42  72.40
  6. vda              0.00      0.00     0.00   0.00    0.00     0.00  272.00      4.05   255.00  48.39    6.54    15.26    0.00      0.00     0.00   0.00    0.00     0.00    1.64  81.60
  7. vda              0.00      0.00     0.00   0.00    0.00     0.00  320.00      6.74   266.00  45.39    4.84    21.56    0.00      0.00     0.00   0.00    0.00     0.00    1.37  78.00
  8. vda              0.00      0.00     0.00   0.00    0.00     0.00 1029.00     28.86   494.00  32.44    1.20    28.72    0.00      0.00     0.00   0.00    0.00     0.00    0.57  86.00
  9. vda              0.00      0.00     0.00   0.00    0.00     0.00 1823.00     40.32   824.00  31.13    0.87    22.65    0.00      0.00     0.00   0.00    0.00     0.00    0.43  93.60
  10. vda              0.00      0.00     0.00   0.00    0.00     0.00 1492.00     42.13   964.00  39.25    0.93    28.91    0.00      0.00     0.00   0.00    0.00     0.00    0.40  98.40
  11. vda              0.00      0.00     0.00   0.00    0.00     0.00 1157.00     23.21   712.00  38.10    1.32    20.54    0.00      0.00     0.00   0.00    0.00     0.00    0.80  98.80
复制代码


真想做严谨的性能测试一定要保证测试环境足够科学才行啊 :)
yejr 3 天前
yejr 发表于 2025-7-30 16:56
看了下测试数据,在压测期间的磁盘I/O性能也太差了,和你说的情况不匹配
你说的

另外,从几个sysbench测试结果报告来看,磁盘I/O的抖动也非常大(avg值和max值相差很大,和95%的值相差也很大),例如

  1. Latency (ms):
  2.          min:                                    2.06
  3.          avg:                                   28.86
  4.          max:                                 3453.24
  5.          95th percentile:                       56.84

  6. Latency (ms):
  7.          min:                                    1.89
  8.          avg:                                   56.70
  9.          max:                                 9271.17
  10.          95th percentile:                       70.55

  11. Latency (ms):
  12.          min:                                    2.18
  13.          avg:                                  111.49
  14.          max:                                10543.45
  15.          95th percentile:                      719.92
复制代码
yunhai1990 3 天前
yejr 发表于 2025-7-30 17:15
另外,从几个sysbench测试结果报告来看,磁盘I/O的抖动也非常大(avg值和max值相差很大,和95%的值相差也 ...

你这结果用什么汇总的,没看到哪里能看到这个。
我们用的磁盘都是虚拟化的,估计是顺序还凑合,随机就拉了
yejr 3 天前
yunhai1990 发表于 2025-7-30 17:21
你这结果用什么汇总的,没看到哪里能看到这个。
我们用的磁盘都是虚拟化的,估计是顺序还凑合,随机就拉了 ...

sysbench报告拉到最后就能看到了
yunhai1990

2

主题

0

博客

7

贡献

新手上路

Rank: 1

积分
12

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2025-8-2 18:45 , Processed in 0.021153 second(s), 17 queries , Redis On.
快速回复 返回顶部 返回列表