gpt4 book ai didi

linux - 使操作系统为 Erlang 提供更多内存访问

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:31 24 4
gpt4 key购买 nike

我一直在功能强大的服务器上运行 erlang 应用程序。然而,有时,您无法避免此类内存错误,尤其是当用户很多时

Crash dump was written to: erl_crash.dumpeheap_alloc: Cannot allocate 467078560 bytes of memory (of type "heap").
更烦人的是你有一台 20GB RAM 的服务器,比如 8 个内核。查看 erlang 说的内存,它无法分配,这就是它崩溃的原因,也令人不安,因为与服务器的库存相比,它的内存非常小。

我今天的问题(我希望它没有关闭)是,可以完成哪些操作系统配置(通常考虑 RedHat、Solaris、Ubuntu 或 Linux),以使其在需要时为 erlang VM 提供更多内存?

如果要在这种功能强大的服务器上运行 erlang 应用程序,对于底层操作系统,应该考虑什么内存(在 erlang 之外)?

问题背景
Erlang 消耗主内存,尤其是当进程数以千计时。我正在使用 Yaws Web Server 运行 Web 服务。在同一个节点上,我让 Mnesia 运行大约 3 个 ram_copies 表。它是一个通知系统,作为在 Intranet 上运行的更大 Web 应用程序的一部分。用户通过运行在不同 Web 服务器和不同硬件上的主应用程序通过 JSONP 访问这个系统。每个用户连接直接向 mnesia 查询它需要的任何数据。然而,随着用户的增加,我总是得到 崩溃转储。我尽可能地调整了应用程序本身,将代码清理为标准,使用了比字符串等更多的二进制文件。避免了 yaws 进程和 mnesia 之间的像 gen_servers 这样的单点,这样每个连接都直接命中 mnesia。该服务器具有大量 RAM 和磁盘空间。但是,当我的节点需要更多内存时它会崩溃,这就是为什么我需要找到一种方法来强制操作系统将更多内存扩展到 erlang。操作系统是 REDHAT ENTERPRISE 6

最佳答案

这可能是因为您在 32 位模式下运行,其中只有大约 4 GB 的 RAM 可寻址。尝试切换到 64 位版本的 erlang,然后重试。

关于linux - 使操作系统为 Erlang 提供更多内存访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13047095/

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