erlang - 无法在堆上分配 - 但内存在那里
问题描述
我正在追逐一个问题:每隔几天我的系统就会崩溃
Slogan: eheap_alloc: Cannot allocate 600904 bytes of memory (of type "heap").
System version: Erlang/OTP 22 [erts-10.5.4] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]
我曾经遇到过一些OOM 情况,但它们是由例如导致消息队列填满整个内存的无限循环引起的。这一次是不同的。cdv 报告崩溃时的内存使用量为 6081 MB。该系统在具有 14GB RAM 的 VM 上运行,该 VM 上没有其他内容。内存监控显示 6GB 级别的稳定使用情况与故障转储一致。所以在崩溃的那一刻,Beam 仍有 8GB 可用,但它无法分配 600k。
不确定这是否相关,但系统使用的大部分内存都在一个 Mnesia ETS 表中——崩溃时它是 5631 MB。
任何人都知道 Erlang 无法分配内存的可能原因,尽管仍有很多可用的内存?
解决方案
推荐阅读
- python - 如何为字典值生成随机键?
- asp.net-mvc - 如何使用实体框架将基类转换为派生类
- python - 如何添加复制某些列的新行,但在其他列中分配新值
- flutter - 颤动中自动扩展容器——适用于所有设备
- javascript - div onclick 不触发(css 动画箭头,可能的 div 大小/覆盖问题)
- javascript - 如何在从一个域重定向到另一个域时将数据传递到另一个域
- python - OneHotEncoder 更改名称列
- hive - 如何正确设置 SerDe XML 架构?
- powerbi - 基于 Power Bi 中的多个切片器计算结果行的数量
- hdbscan - 如何在 HDBSCAN 中打印输出结果