我有一个应用程序在kubernetes容器中运行,容器不断重启,我用kubectl logs -f <pod-name> -n <name-space> --previous
检查了原因
并发现以下问题FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
在instana中检查pod状态时,我得到了以下日志。
在配置文件中进一步检查缩放得到了以下结果。
这是否意味着一个空闲的nodejs进程一直在使用内存!或者有一些其他的snippet正在那个进程中运行?<(idle)>at:0
是什么意思?
1条答案
按热度按时间j2datikz1#
根据错误
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
,Javascript进程(JVM)使用的内存远远超过堆大小。运行容器的系统开始出现内存问题(重新启动),因为容器占用的内存远远超过堆大小。
检查以下解决方案:
1.设置Docker限制以观察进程正常状态下的内存使用情况。
1.没有一种可靠的方法可以估计Java进程的全部内存使用情况,因为需要考虑的因素太多了。可以通过JVM标志来缩小或限制某些内存区域(如代码缓存),但许多其他内存区域根本不受JVM控制。
有关详细信息,请参阅此SO。