Na documentação do PostgreSQL ,
The most important shared memory parameter is SHMMAX
, the maximum size, in bytes, of a shared memory segment. If you get an error message from shmget like "Invalid argument", it is likely that this limit has been exceeded. [...] While it is possible to get PostgreSQL to run with SHMMAX
as small as 2 MB, you need considerably more for acceptable performance. Desirable settings are in the hundreds of megabytes to a few gigabytes.
Mais abaixo na página, há exemplos de como fazer as alterações no Linux. Para permitir 8 GB:
$ sysctl -w kernel.shmmax=8589934592
$ sysctl -w kernel.shmall=2097152
Se isso funcionar, você pode fazer com que as configurações entrem em vigor na próxima inicialização, editando /etc/sysctl.conf
.
O valor selecionado depende do que mais você está usando na máquina. Se é um servidor PostgreSQL dedicado, vá em frente e permita que a maior parte da memória da máquina seja usada para memória compartilhada pelo PostgreSQL. Se você pretende executar outras coisas também na mesma máquina, então você pode querer ser mais conservador.