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.