我在容器内运行 .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 Debugger
或gdb
来从容器外部生成容器的核心槽,
- “sudo docker ps -a | grep service_container_name”获取容器 ID。
- “sudo dockerspect [container id] | more”获取父PID
- “pstree -pg [父进程 pid]” 获取子进程 PID
- “sudo ps -aux | grep [子进程 pid]”
- “sudo gcore PID”