A incapacidade de alocar a memória compartilhada é um tipo especial de animal. Isso não significa que o sistema como um todo esteja sem memória, mas sim que você atingiu um dos limites que governam a alocação de memória compartilhada.
Os dois sysctls relevantes são kernel.shmmax
(que é o limite, em bytes, de quão grande um único segmento de memória compartilhada pode ser) e kernel.shmall
(que é a quantidade total de memória compartilhada, em bytes, que pode ser atribuído ao sistema). Use grep Shmem /proc/meminfo; cat /proc/sys/kernel/shmall
para visualizar esses valores.
Você pode saber se shmall
foi atingido, comparando a linha Shmem
de /proc/meminfo
com /proc/sys/kernel/shmall
. Se eles forem iguais, você atingiu o limite de memória compartilhada do sistema e precisará aumentar kernel.shmall
(ou parar algo que tenha memória compartilhada em uso). Caso contrário, você provavelmente precisará aumentar kernel.shmmax
para algo maior do que qualquer que seja o processo que a falha queira usar.