MySQL在Docker容器中出现卡顿问题

6

两个mysql(5.6.20)实例分别在两个docker容器(1.8.32)中,主从构建半同步复制,然后用户总是在主服务器上执行一些dml或ddl操作。

十天或更长时间后,所有连接到从服务器的客户端都会挂起。

使用gdb -p/strace命令查看从服务器的mysqld进程挂起。

使用pstack/perf top -p命令查看从服务器的mysqld进程未显示任何内容。

使用kill -9命令无法杀死mysqld进程。

使用docker stop命令无法停止docker容器。

有哪些工具或方法可以帮助定位问题?


1个回答

4
我今天遇到了同样的问题。在我的情况下,使用docker-compose启动mysql和一系列消费者,使用来自docker hub的当前“最新”mysql镜像(5.7.16-1debian8)。
我已经启动了许多这样的实例,在一个星期内,我看到了几个实例,其中mysql有超过100个线程,主机上的所有内存都被消耗掉了,容器挂起了。我无法停止任何东西,甚至无法重启。只有重新启动虚拟机才能恢复。
我将尝试进行监视。我怀疑它高度依赖基础设施负载(慢的VM主机导致查询积压)。解决方案更可能是mysql调优和docker错误。

非常感谢,我正在尝试定位 Docker 和 Linux 内核中的问题。 - songlei.wang
你有什么进展吗?我几乎已经通过docker-ce 18.09完全解决了这个问题,但我仍然遇到一些情况,即docker无法在容器挂起后停止或清理它。请注意,我有Ubuntu 16+和Centos 7 docker主机,而该问题仅出现在Centos 7主机中。Ubuntu 18.04非常稳定 - 这指向一个内核错误的方向。 - Dave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接