我看到我的一些服务因“分配内存错误”或“无法创建新进程”等错误而遭受/崩溃。
我对此有点困惑,因为日志显示当时系统有大量可用内存(在一种情况下约为 26GB)可用内存,并且没有以任何其他方式特别强调。
在注意到带有类似错误的 JVM 崩溃并添加了“交换空间不足?”的查询之后。它让我更深入地挖掘。
事实证明,有人为我们的区域配置了一个 2GB 的交换文件。我们的区域没有内存上限,目前可以根据需要访问 128GB 的 RAM。我们的 SA 计划在有机会时将其上限设置为 32GB。
我目前的想法是,虽然有足够的内存供操作系统分配,但交换空间似乎严重不足(基于此处的其他答案)。似乎 Solaris 想要确保有足够的交换空间以防万一必须换出(即它正在保留交换空间)。
这种想法是正确的,还是有其他原因导致我在大量可用内存和看似过小的交换空间时出现内存分配错误?