我在装有 Almalinux 9 OS 的 AWS EC2 实例 r6i.4xlarge 中部署了 SingleStore DB CLI(Cluster in a Box)。通过管道加载数据时出现以下错误:
line 34: ER_MEMSQL_OOM (1712), Leaf Error (127.0.0.1:3307): The operating system failed to allocate memory (MemSQL memory use 18658.88 Mb). The request was not processed. See https://docs.memsql.com/troubleshooting/latest/memory-errors
我需要加载的表几乎有5GB。
该服务器是 32CPU/128GB,从未达到这个数量。
这是我的 /etc/sysctl.conf 文件:
vm.max_map_count = 1000000000
vm.min_free_kbytes = 4194304
net.core.wmem_max = 8388608
net.core.rmem_max = 8388608
vm.overcommit_memory = 0
#vm.overcommit_ratio = 99
vm.swappiness = 10
从 Singlestore 来看一切似乎正常,有人遇到过这种错误吗?
请帮忙
答案1
首先,“无法分配内存”并不意味着“内存不足”。它的意思是内核不愿意分配(即“保留”)进程请求的内存。这与实际内存使用量关系不大,因为大多数进程使用的内存比它们分配的内存少得多。对于这种情况,默认是过度使用内存(即分配比系统可用内存更多的内存)。
通常,当人们遇到此类问题时,最简单的解决方案就是添加交换空间,这样内核就会分配更多内存。它实际上不会大量使用交换空间,只是需要知道它可以。