L̲̳*_*̲̳̳ 10 erlang fault-tolerance out-of-memory
有了Erlang的"让它崩溃"的理念,如果一个进程无法分配进行其操作所需的内存,人们就会期望整个VM不会崩溃.实际上,如果系统有一个启发式来杀死一些进程来释放一些内存,那么其他一些进程就会处理这个并恢复.根管理员可能不太可能被启发式杀死.
这与大多数现代流行语言形成鲜明对比,这些语言只会死或让操作系统选择做什么.
如何在Erlang中实际处理内存不足?
Hyn*_*dil 11
当Erlang VM在内存不足的情况下运行时,它只会崩溃整个VM.原因是这是最简单安全的事情.
如果需要容错系统,则必须具有多台计算机.您不能只使用一台计算机(精确的自主计算单元)来构建容错系统.因此,如果您的应用程序在内存不足的情况下运行,最简单的事情就是让整个VM崩溃.无论如何,您的系统中存在错误.
处理所有边缘情况 - 您可以处理的内存不足以及哪些不可以 - 太复杂且容易出错.杀死违规流程不是解决方案.首先,这是一个令人讨厌的过程很难决定.杀死一些"随机"(启发式决定)过程既不是解决方案,因为启发式杀死的这个过程可能是负责意外恢复的过程.杀死整个虚拟机不仅是内存不足的最简单,也是唯一合理的解决方案.
在需要可靠系统的情况下,在大多数现代流行语言或操作系统中完成它的方式肯定是错误的.对于桌面或不太严格的要求是可以接受的,但对于Erlang设计的系统来说绝对是不可接受的.
| 归档时间: |
|
| 查看次数: |
1219 次 |
| 最近记录: |