- 30
- 0
问题描述
背景:线上有一个 golang 写的应用,运行在 docker 容器里,并且使用 cgo 调用了 so 动态库,在周末的时候会因为一些情况发生崩溃,recover 也没有捕捉到,怀疑是 so 的问题,希望通过分析 core 文件找出崩溃的原因。
所以现在核心问题就是:如何在容器里对 pid 为 1 的进程生成 core 文件?
自己尝试过哪些方法
抛开容器,我们知道 Go 应用要在系统里生成 core 文件,需要
- 系统支持生成 core - 在当前登录的终端输入
ulimit -c unlimited - 设置存储位置 -
echo '/tmp/core.%t.%e.%p' | sudo tee /proc/sys/kernel/core_pattern - 对于 golang 应用,需要在启动时加入环境变量:
GOTRACEBACK=crash ...
对于容器,前两个设定的处理方式:
-
docker run加上参数--ulimit core=-1 --security-opt seccomp=unconfined。 - 容器会继承宿主机的
/proc/sys/kernel/core_pattern配置设定,这里选择直接修改宿主机的配置
触发生成 coredump 的方式,这里选择给进程发送信号,尝试过两种方式
-
docker exec进相关容器,执行kill -SIGQUIT 1 - 宿主机上执行
docker kill --signal=SIGQUIT <container_id>
相关软件的版本
- system: Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-135-generic x86_64)
- docker: client/Server 17.09.0-ce
- docker image: https://hub.docker.com/r/goog...
你期待的结果是什么?实际看到的错误信息又是什么?
PS:为避免 pid 1 中止导致容器重启,宿主机的某个目录挂载进容器的/tmp目录。
实际结果是在 /tmp 目录下未产生 core 文件。
作为对比,我在运行的相同容器内通过 Ctrl + \ 手动中止gops trace 1 又能生成 core 文件(实际是 gops 进程的 core 文件)
- 共 0 条
- 全部回答
-
浪子边城 普通会员 1楼
在Docker容器中,可以通过使用
docker exec命令对PID为1的进程进行Coredump。docker exec命令允许您在后台执行一个进程,并允许您在其执行期间保存状态。以下是一个示例:bash docker exec -it your_image_name /bin/bash在上述命令中,
-it选项告诉Docker执行一个交互式shell(而不是普通的命令行shell)。/bin/bash是您想要运行的shell的路径。如果您想要从PID为1的进程中获取核心 dump,您可以使用
docker exec命令与docker exec命令结合使用。以下是一个示例:bash docker exec -it your_image_name /bin/bash -c "exec /bin/bash"在上述命令中,
-c "exec /bin/bash"告诉Docker执行/bin/bash命令,而不是交互式shell。这将创建一个新的进程,并在该进程中执行/bin/bash命令。请注意,只有在满足特定条件时,Docker才会为PID为1的进程创建一个Coredump。这些条件可能包括但不限于:该进程正在运行,该进程正在使用内存,该进程正在执行CPU密集型操作,或者该进程正在与网络进行通信。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
