gpt4 book ai didi

erlang - 无法分配 298930300 字节的内存(类型 "old_heap")

转载 作者:行者123 更新时间:2023-12-04 14:32:03 25 4
gpt4 key购买 nike

在对我的 erlang 服务器进行负载测试时,使用 +P(最大并发进程数)增加(100、200、3000....)进程数,并使 10 个进程向其余创建的进程发送 1 条消息进程,我在 erlang 控制台上收到一条消息:

"Crash dump was written to: erl_crash.dump. eheap_alloc: Cannot allocate 298930300 bytes of memory (of type "old_heap"). Abnormal termination".



我正在使用 Windows XP。当我创建过程(它正在工作)时没问题。崩溃发生在进程开始通信(发送 hi 和接收 hello)之后,这是我遇到的唯一问题(顺便说一下,+hms 设置了进程的默认堆大小)。

我该如何解决这个问题?

最佳答案

如果有人会发现它作为此类问题的可能原因之一有用(因为我没有在任何地方找到任何具体答案)
我们在rabbitmq服务器(linux,64位,持久队列,默认配置的水印)上遇到了类似的问题

eheap_alloc:无法分配 yyy 字节的内存(“堆”类型)

eheap_alloc:无法分配 xxx 字节的内存(“old_heap”类型)

问题在于一次重新排队过多的消息。我们的“监控”代码使用带有重新排队选项的“获取”消息,而不限制要获取和重新排队的消息数量(在我们的例子中 - 队列中的所有消息都是 4K)
因此,有一次它尝试将所有这些消息添加回队列,但服务器因上述消息而失败。

希望它能为某人节省几个小时。

关于erlang - 无法分配 298930300 字节的内存(类型 "old_heap"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11043167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com