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

9 天前
 JiangZeYi

问题

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

相关截图

阿里监控:

ATOP ( 10 分钟):

慢 SQL 日志:

3059 次点击
所在节点    MySQL
34 条回复
bronyakaka
9 天前
应该给阿里云提工单
JiangZeYi
9 天前
@bronyakaka 已经找过售后了,售后让我们从业务侧优化 MySQL 内存使用和调用逻辑
cryptovae
9 天前
楼上两个也是神人

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

msg7086
8 天前
难说,但是我第一感觉就是查询有问题吃满 IO 。
gamefriends
8 天前
就拆分一下表,做一些清洗后的数据到 redis ,减少一下查询压力。
xmh51
8 天前
@JiangZeYi 这个不就是原因吗? 全表扫描是最消耗磁盘 io 的行为
realpg
8 天前
招个 DBA 解决问题吧...
显然单纯的你们不会用数据库...
要不, 也可以尝试把数据盘容量开到 2TB 有效提升 iops
yinmin
8 天前
加内存,内存总量大于数据库文件大小*1.5 倍
hefish
8 天前
开发不珍惜资源啊。。。。闭着眼睛往死里用啊。。。多半是某个 select 或者 update ,导致扫描了海量的 row

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1155028

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX