如何从正在运行的容器外部生成内存转储

如何从正在运行的容器外部生成内存转储

我在容器内运行 .net 服务。我观察到容器内该服务的内存消耗逐渐上升到为该容器设置的限制,在达到阈值限制后,容器被杀死。为了进一步调试,我想通过留在容器外部来生成容器内 .net 服务的内存转储。我可以做吗?由于政策不允许,我没有安装任何第三方软件。

我当前的主机详细信息如下,

NAME="Ubuntu"
VERSION="16.04.6 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.6 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"

但我已经Ulimit安装在主机上了。尝试使用 Ulimit 但没有成功。

答案1

我弄清楚了,我使用GNU Debuggergdb来从容器外部生成容器的核心槽,

  1. “sudo docker ps -a | grep service_container_name”获取容器 ID。
  2. “sudo dockerspect [container id] | more”获取父PID
  3. “pstree -pg [父进程 pid]” 获取子进程 PID
  4. “sudo ps -aux | grep [子进程 pid]”
  5. “sudo gcore PID”

相关内容