为什么在本地工作的服务会在docker中频繁地获取kill信号?

我在一个minikube(kubernetes)开发环境中的Docker容器中托pipe了一个通用反应应用程序。 我使用virtualbox,实际上我在这个虚拟机上有更多的微服务。

在这个反应的应用程序中,我使用pm2重新启动我的应用程序对服务器代码的更改,并且webpack hmr热更新客户端代码更改为客户端代码。

每说15-45秒, pm2正在logging下面的消息给我,表明应用程序由于SIGKILL退出。

 App [development] with id [0] and pid [299], exited with code [0] via signal [SIGKILL] 

我不能为了我的生活找出它为什么发生。 这是比较频繁的,但不是每隔一秒就发生一次。 这是非常烦人的,因为每次发生,我的webpack包必须重新编译。

pm2在这种types的开发环境中可能会收到SIGKILL的原因是什么? 另外,有什么可能的方法来debugging呢?

我注意到,我的服务,使用pm2重新启动服务器更改不会有这个问题,当他们只是后端服务。 即当他们没有webpack 。 另外,我在应用程序的prod版本中看不到这些SIGKILL问题。 这对我来说,webpack hmr setup,pm2和minikube / docker的组合有一些问题。

我已经尝试过本地的应用程序(不是在docker / minikube),它没有任何sigkills工作正常,所以它不能是webpack hmr自己。 kubernetes是否会杀死使用大量内存的服务? (也许它认为我的应用程序正在使用大量的内存)。 如果情况并非如此,kubernetes或docker发送SIGKILL可能是什么原因? 有没有什么办法来debugging呢?

任何指导,非常感谢。 谢谢

我不能从你发布的错误信息中知道,但通常这是内核OOM杀手(Out of Memory Killer)取出你的进程的结果。 这可能是因为你的进程只是占用太多的内存,或者你的容器上的cgroup设置过于激进,并导致它被杀死。 您的VirtualBox实例也可能有内存不足的情况。

通常你会看到Docker报告docker ps -a代码137退出的容器

在有问题的节点上的dmesg或syslogs可能会显示内核OOM杀手输出。