Docker启动问题:MySQL 5.7.44容器崩溃导致服务器OOM崩溃重启的故障分析与解决

Docker启动问题:MySQL 5.7.44容器崩溃导致服务器OOM崩溃重启的故障分析与解决

最近,在尝试使用Docker启动MySQL 5.7.44时遇到了一些困难。容器无法正常启动,并且引发了服务器内存溢出(OOM)的情况,导致服务器突然崩溃重启。以下是详细的问题描述及解决步骤:

问题描述

在[日期],我尝试使用Docker启动MySQL 5.7.44实例,但容器未能成功启动,触发了一系列事件,最终导致服务器崩溃。经过日志分析,我发现服务器日志中出现了以下记录:

Jul 17 04:12:36 ecs-104736-8-0001 dockerd[2021]: 2024/07/17 04:12:36 http: superfluous response.WriteHeader call from go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp.(*respWriterWrapper).WriteHeader (wrap.go:98)
Jul 17 04:12:36 ecs-104736-8-0001 dockerd[2021]: time="2024-07-17T04:12:36.348378469+08:00" level=error msg="Error streaming logs: invalid character 'l' after object key:value pair" container=0b9bfa68643c4de230115b7df80657a366fbc1685e8c0715ff86fa75a944b6d3 method="(*Daemon).ContainerLogs" module=daemon spanID=1c68ee0a43e29860 traceID=de5bdfc278631edb10809105e59b9536
Jul 17 04:12:52 ecs-104736-8-0001 containerd[1139]: time="2024-07-17T04:12:52.373615012+08:00" level=info msg="shim disconnected" id=0b9bfa68643c4de230115b7df80657a366fbc1685e8c0715ff86fa75a944b6d3
Jul 17 04:12:52 ecs-104736-8-0001 containerd[1139]: time="2024-07-17T04:12:52.373663678+08:00" level=warning msg="cleaning up after shim disconnected" id=0b9bfa68643c4de230115b7df80657a366fbc1685e8c0715ff86fa75a944b6d3 namespace=moby
Jul 17 04:12:52 ecs-104736-8-0001 containerd[1139]: time="2024-07-17T04:12:52.373698925+08:00" level=info msg="cleaning up dead shim"
Jul 17 04:12:52 ecs-104736-8-0001 dockerd[2021]: time="2024-07-17T04:12:52.373700040+08:00" level=info msg="ignoring event" container=0b9bfa68643c4de230115b7df80657a366fbc1685e8c0715ff86fa75a944b6d3 module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
Jul 17 04:12:52 ecs-104736-8-0001 containerd[1139]: time="2024-07-17T04:12:52.381883823+08:00" level=warning msg="cleanup warnings time=\"2024-07-17T04:12:52+08:00\" level=info msg=\"starting signal loop\" namespace=moby pid=10807 runtime=io.containerd.runc.v2\n"
Jul 17 04:12:52 ecs-104736-8-0001 kernel: [ 1513.663443] docker0: port 1(veth498c614) entered disabled state
Jul 17 04:12:52 ecs-104736-8-0001 kernel: [ 1513.663491] vethdda028c: renamed from eth0
Jul 17 04:12:52 ecs-104736-8-0001 NetworkManager[1068]: <info>  [1721160772.4158] manager: (vethdda028c): new Veth device (/org/freedesktop/NetworkManager/Devices/74)

Mysql启动错误日志

[ERROR] [Entrypoint]: mysqld failed while attempting to check config
mysql-1    |    command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.TEq7KCCdzr

解决步骤

经过仔细检查日志和Docker配置,我发现问题出在容器配置上。以下是解决问题的关键配置调整:

docker-compose.yml文件中,为MySQL服务添加了如下配置以增加文件描述符的限制:

mysql:
  image: mysql:5.7.44
  ulimits:
    nofile:
      soft: "65536"
      hard: "65536"

通过增加文件描述符限制,成功避免了容器启动过程中的OOM问题,并确保MySQL服务正常运行。

这次经历让我更加深入了解了Docker容器启动问题的诊断与解决方法,也提醒了我在部署时注意资源限制的重要性。希望这篇博文能对遇到类似问题的人有所帮助!

评论

  1. 2 年前
    2024-9-03 14:42:55

    Your blog is a true gem in the world of online content. I’m continually impressed by the depth of your research and the clarity of your writing. Thank you for sharing your wisdom with us.

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇