我有一个ML模型,在本地运行良好,我将其打包为Docker镜像。因此,最初在我的Mac上,Docker被配置为仅使用2 GB内存,我将其增加到8,但我的应用程序崩溃并显示消息killed。所以我配置docker使用所有的系统内存,它仍然有同样的效果。我对这个有点困惑。既然现在它可以访问所有系统内存资源,那么如果同一个应用程序在主机上运行良好,它应该不会耗尽内存吗?
killed
qyyhg6bp1#
你不应该配置docker使用所有的系统内存,os内核需要内存来执行重要的系统功能,docker守护进程也需要内存。如果内核检测到没有足够的内存来执行重要的系统功能,它将开始终止优先级较低的进程以释放内存。当你在docker中运行app时,容器和主机是隔离的。当内存不够时,主机可以做的就是杀死容器。当你在主机上运行应用程序而内存不足时,操作系统可能会尝试将内存交换到磁盘或进行一些gc(垃圾收集)。
1条答案
按热度按时间qyyhg6bp1#
你不应该配置docker使用所有的系统内存,os内核需要内存来执行重要的系统功能,docker守护进程也需要内存。如果内核检测到没有足够的内存来执行重要的系统功能,它将开始终止优先级较低的进程以释放内存。
当你在docker中运行app时,容器和主机是隔离的。当内存不够时,主机可以做的就是杀死容器。
当你在主机上运行应用程序而内存不足时,操作系统可能会尝试将内存交换到磁盘或进行一些gc(垃圾收集)。