关于 MySQL 的一个问题,希望得到排查思路

2023-09-12 16:51:03 +08:00
 cmai

当我在并行执行几个复杂的视图的时候,mysql 整个库都会陷入到卡死的状态,所有的表都打不开,可以从哪方面排查呢?

2819 次点击
所在节点    MySQL
34 条回复
cmai
2023-09-12 16:52:56 +08:00
我在服务器端执行了一个简单的 sql,通过 show profiles 查看他的执行进度, 是卡在 sending data 阶段
ArthurKing
2023-09-12 16:55:04 +08:00
监控下服务器性能,cpu 、内存、io 、网络
cmai
2023-09-12 16:56:21 +08:00
mysql 版本是:5.7.38-log
环境是 docker ,容器化部署的 request 0.1 核 4G ,limit 给的 16 核 32G

存储用的是 ceph


我就想知道可能因为哪些原因会导致整个库都没法正常访问,cpu 在最高点也只到了两核,内存只用到了 6G , 磁盘 I/O 最高点 30M/S
cmai
2023-09-12 16:56:42 +08:00
@ArthurKing 看不出问题
zhangkunkyle
2023-09-12 16:58:23 +08:00
innodb_buffer_pool_size 小不小
zhangkunkyle
2023-09-12 16:59:09 +08:00
小的话改大点,改到内存的 75%-80%,重启 MySQL 再试试
cmai
2023-09-12 17:03:05 +08:00
@zhangkunkyle

BUFFER POOL AND MEMORY
----------------------
Total large memory allocated 4397727744
Dictionary memory allocated 1803515
Buffer pool size 262112
Free buffers 8241
Database pages 250582
Old database pages 92339
Modified db pages 0
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 2896024, not young 149994356
0.00 youngs/s, 0.00 non-youngs/s
Pages read 2396803, created 975730, written 1883403
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 250582, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
cmai
2023-09-12 17:05:25 +08:00
4G ,我觉得原因可能不在这
lDqe4OE6iOEUQNM7
2023-09-12 17:19:25 +08:00
查看 MySQL 进程列表
javaboy233
2023-09-12 17:29:08 +08:00
卡死的话,建议打印下线程栈
cmai
2023-09-12 19:56:53 +08:00
@James2099 进程列表, 指的是 show full processlist 吗, 这个我看了, 没什么问题
cmai
2023-09-12 20:10:37 +08:00
8215 是我执行的单表查询,已经卡死了,上面四个是视图的 SQL
![20230912-200924.jpg]( https://x.imgs.ovh/x/2023/09/12/650055143df7e.jpg)
cmai
2023-09-12 20:11:43 +08:00
图片好像没贴上来呢
<img src="https://x.imgs.ovh/x/2023/09/12/650055143df7e.jpg" alt="20230912-200924.jpg" title="20230912-200924.jpg" />
devopsdogdog
2023-09-12 22:24:33 +08:00
mysql 日志,加贴配置文件,会跟踪系统调用的话,直接看调用卡在哪里
yinmin
2023-09-12 23:37:12 +08:00
docker 对 mysql 容器做 limit 是有坑的,容器里是读到物理机实际内存和 cpu 数的,与 limit 不一样会卡,而且内存超限 mysql 可能直接崩掉。

建议取消 docker limit ,限制参数改到 mysql 配置里。
yinmin
2023-09-12 23:40:48 +08:00
@cmai 可能问题出在 docker limit 上,去掉试试
yinmin
2023-09-12 23:57:32 +08:00
@cmai 如果部署在 k8s 上,需要调整 mysql 配置,以匹配 k8s 的 limit
yinmin
2023-09-13 00:12:21 +08:00
另外,ceph 读写性能是否足够,通常最佳配置下的 ceph 速度也只有 sata ssd 速度,与 NVMe ssd 差 5-10 倍的速度。
yinmin
2023-09-13 00:27:18 +08:00
问题大概率是 ceph 的读写速度和延时跟不上导致的。
opengps
2023-09-13 00:28:30 +08:00
with no lock

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

https://www.v2ex.com/t/973081

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

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

© 2021 V2EX