V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
JiangZeYi
V2EX  ›  MySQL

MySQL 磁盘读取飙升,导致阿里云服务器卡死

  •  
  •   JiangZeYi · 7 天前 · 3001 次点击

    问题

    MySQL 是跑在 Docker 上,在某段时间内 MySQL 磁盘读取飙升,导致服务器卡死。

    这是因为查询扫描行数过多导致的磁盘读取飙升吗?还是有其他原因。

    磁盘读取飙升的问题该如何得到解决?优化查询 SQL ?换阿里云的 RDS ?

    有大佬能解答下吗?

    服务器配置

    实例规格:ecs.c8i.xlarge

    CPU:4 核 vCPU

    内存:8G

    磁盘:ESSD P1 40G

    MySQL 配置

    [mysqld]
    slow_query_log=ON
    long_query_time=3
    innodb_buffer_pool_size = 1536M
    innodb_log_file_size=256M
    innodb_log_buffer_size=32M
    

    相关截图

    阿里监控:

    Po7PFJD

    ATOP ( 10 分钟):

    NqFgFWr

    QLD3fDs

    慢 SQL 日志:

    yHquwHg

    第 1 条附言  ·  6 天前
    感谢各位的建议,这边已经换成高性能云盘的 RDS 了。
    34 条回复    2025-08-30 10:00:09 +08:00
    bronyakaka
        1
    bronyakaka  
       7 天前
    应该给阿里云提工单
    JiangZeYi
        2
    JiangZeYi  
    OP
       7 天前
    @bronyakaka 已经找过售后了,售后让我们从业务侧优化 MySQL 内存使用和调用逻辑
    cryptovae
        3
    cryptovae  
       7 天前   ❤️ 2
    楼上两个也是神人

    `6G 显存跑 32B 大模型,跑不了,然后跑去问显卡厂商要解决方案`
    JiangZeYi
        4
    JiangZeYi  
    OP
       7 天前
    @cryptovae 我也没要解决方案呀🤣
    6JSh5b6Q5Z2k
        5
    6JSh5b6Q5Z2k  
       7 天前
    歪个楼 为什么在 docker 中跑?生产环境吗
    msg7086
        6
    msg7086  
       7 天前   ❤️ 1
    特定查询有问题?扫 3.6M 行返回 438 行,可以 explain 一下看看。
    spritecn
        7
    spritecn  
       7 天前
    被某个 job 拉爆了吧
    JiangZeYi
        8
    JiangZeYi  
    OP
       7 天前
    @6JSh5b6Q5Z2k 生产环境,图方便吧,数据文件还是挂载在宿主机上
    yh7gdiaYW
        9
    yh7gdiaYW  
       7 天前
    加内存、调升 ESSD 等级,阿里云服务器这个问题挺蛋疼,不知道别的云服务商怎么管控的
    yh7gdiaYW
        10
    yh7gdiaYW  
       7 天前
    然后盘 40G 太小了,直接用默认的系统盘跑的?换个容量更大的数据盘,PL0 就行但空间要大,不然 IOPS 就那一点
    JiangZeYi
        11
    JiangZeYi  
    OP
       7 天前
    @spritecn 出现好几次 IO 读取飙升的情况了,时间段也是随机,我就没怀疑是某个 job 的原因
    JiangZeYi
        12
    JiangZeYi  
    OP
       7 天前
    @yh7gdiaYW 是直接在默认系统盘跑的。好的,之前 PL0 升 PL1 IOPS 也没加多少,看来要换个容量大的盘
    ![9lPEe77]( "9lPEe77")
    fenglingyu
        13
    fenglingyu  
       7 天前
    我之前在阿里云的宝塔也遇到了。限制 MySQL 资源占用就解决了,你这个已经限制还这样就不知道怎么解决了
    JiangZeYi
        14
    JiangZeYi  
    OP
       7 天前
    @msg7086 有一条 count 查询没走索引,调用 33 次,扫描 2.15M ,然后还有一些扫描条数多的都是走 ORM 框架查询,没有索引,是全表扫描, 但不知道为啥 MySQL 10 分钟 RDDSK 能有 30G

    msg7086
        15
    msg7086  
       7 天前
    难说,但是我第一感觉就是查询有问题吃满 IO 。
    gamefriends
        16
    gamefriends  
       7 天前   ❤️ 1
    就拆分一下表,做一些清洗后的数据到 redis ,减少一下查询压力。
    xmh51
        17
    xmh51  
       7 天前
    @JiangZeYi 这个不就是原因吗? 全表扫描是最消耗磁盘 io 的行为
    realpg
        18
    realpg  
    PRO
       7 天前
    招个 DBA 解决问题吧...
    显然单纯的你们不会用数据库...
    要不, 也可以尝试把数据盘容量开到 2TB 有效提升 iops
    yinmin
        19
    yinmin  
       6 天前 via iPhone   ❤️ 1
    加内存,内存总量大于数据库文件大小*1.5 倍
    hefish
        20
    hefish  
       6 天前
    开发不珍惜资源啊。。。。闭着眼睛往死里用啊。。。多半是某个 select 或者 update ,导致扫描了海量的 row
    BigShot404
        21
    BigShot404  
       6 天前
    我也觉得这几天阿里云是有点问题的,这两天我测试一个 mysql 的业务,用了一台突发性能,虽然机器性能不高。但三个表,加起来不超过 50 列,500 条记录左右,BPS 能跳到 100M ,这肯定不正常,而且很短时间里恢复,后续也无法复现。我感觉是阿里云本身有什么进程在扫。但我都发生在半夜。
    est
        22
    est  
       6 天前
    ESSD P1 40G 的 iops 如何。。。直接 ecs 上安装 docker 跑 mysql ????还是生产环境?
    loveshuyuan
        23
    loveshuyuan  
       6 天前
    测测阿里云磁盘的性能吧,你就不会想着去跑数据库了
    shiny
        24
    shiny  
       6 天前 via iPhone
    看下有哪些 slow sql 就基本知道排查方向了
    yayoi
        25
    yayoi  
       6 天前 via Android   ❤️ 1
    不加钱就找 dba 看,售后说的很清楚了。加钱的话阿里现在 rds 有 io 突发型的硬盘,和 pl1 费用一样,但是 io 不受容量限制,其他 io 限制还是有
    zhuwd
        26
    zhuwd  
       6 天前
    @est 用 docker 跑有什么问题吗,我司正准备这么干,如果数据目录直挂到宿主机的数据盘也会存在性能损耗?
    liuhan907
        27
    liuhan907  
       6 天前
    @zhuwd 几乎不存在可观测的差距
    est
        28
    est  
       6 天前
    @zhuwd 我理解宿主机就是 ecs 虚拟机?为啥不直接跑进程呢。。是 docker pull 更方便么?
    zhuwd
        29
    zhuwd  
       6 天前
    @est 运维起来更省心些,包括迁移、扩容之类的,也能做一些环境隔离
    JiangZeYi
        30
    JiangZeYi  
    OP
       6 天前
    @est 按照阿里的 IOPS 计算公式,40G 有 3800 IOPS 。实际 IOPS 没有跑过
    yh7gdiaYW
        31
    yh7gdiaYW  
       6 天前
    @JiangZeYi 你主贴里的图,IOPS 不已经快摸到 3.9k 了么?正好就是 40G PL1 的上限
    yh7gdiaYW
        32
    yh7gdiaYW  
       6 天前   ❤️ 1
    不过吞吐量也到 140 了,那 PL0 的话也快到顶了有一定风险,预算足够还是继续 PL1 然后把容量开大点
    esile
        33
    esile  
       5 天前
    建议直接买 rds
    fugu37
        34
    fugu37  
       3 天前
    用树莓派在 TF 卡上搭数据库 IO 性能恐怕都比楼主的服务器强🤣
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3089 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 12:12 · PVG 20:12 · LAX 05:12 · JFK 08:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.