Обсуждение: Re: could not create shared memory segment: Invalid argument

Поиск
Список
Период
Сортировка

Re: could not create shared memory segment: Invalid argument

От
Ryan King - NOAA Affiliate
Дата:
Apologies ahead of time for not knowing which group to send to, but I wanted to see if anyone has encountered and resolved this type of error. I'm setting up postgresql 9.2 streaming replication on RH and after copying the master data directory over to the slave, the psql service refuses start and gives the following errors. 



   2015-07-13 23:55:41.224 UTC FATAL:  could not create shared memory segment: Invalid argument
   2015-07-13 23:55:41.224 UTC DETAIL:  Failed system call was shmget(key=5432001, size=1146945536, 03600).
   2015-07-13 23:55:41.224 UTC HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  To reduce the request size (currently 1146945536 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.
        If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.
        The PostgreSQL documentation contains more information about shared memory configuration.
   2015-07-13 23:56:21.344 UTC FATAL:  could not create shared memory segment: Invalid argument
   2015-07-13 23:56:21.344 UTC DETAIL:  Failed system call was shmget(key=5432001, size=58302464, 03600).
   2015-07-13 23:56:21.344 UTC HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  To reduce the request size (currently 58302464 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.
        If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.
        The PostgreSQL documentation contains more information about shared memory configuration.



I've set shared_buffer way down to next to nothing along with kernel.shmmax and kernel.shmall per some blogs. However, the same error persists, and I'm getting no where. I think ultimately the solution is to upgrade, but the devs may not be ready for an upgrade at this point. Any help would be greatly appreciated. Thanks!

Re: could not create shared memory segment: Invalid argument

От
Andy Colson
Дата:
On 7/13/2015 7:08 PM, Ryan King - NOAA Affiliate wrote:
> Apologies ahead of time for not knowing which group to send to, but I
> wanted to see if anyone has encountered and resolved this type of error.
> I'm setting up postgresql 9.2 streaming replication on RH and after
> copying the master data directory over to the slave, the psql service
> refuses start and gives the following errors.
>
>
>
>     2015-07-13 23:55:41.224 UTC FATAL:  could not create shared memory
> segment: Invalid argument
>     2015-07-13 23:55:41.224 UTC DETAIL:  Failed system call was
> shmget(key=5432001, size=1146945536, 03600).
>     2015-07-13 23:55:41.224 UTC HINT:  This error usually means that
> PostgreSQL's request for a shared memory segment exceeded your kernel's
> SHMMAX parameter.  You can either reduce the request size or reconfigure
> the kernel with larger SHMMAX.  To reduce the request size (currently
> 1146945536 bytes), reduce PostgreSQL's shared memory usage, perhaps by
> reducing shared_buffers or max_connections.
>          If the request size is already small, it's possible that it is
> less than your kernel's SHMMIN parameter, in which case raising the
> request size or reconfiguring SHMMIN is called for.
>          The PostgreSQL documentation contains more information about
> shared memory configuration.
>     2015-07-13 23:56:21.344 UTC FATAL:  could not create shared memory
> segment: Invalid argument
>     2015-07-13 23:56:21.344 UTC DETAIL:  Failed system call was
> shmget(key=5432001, size=58302464, 03600).
>     2015-07-13 23:56:21.344 UTC HINT:  This error usually means that
> PostgreSQL's request for a shared memory segment exceeded your kernel's
> SHMMAX parameter.  You can either reduce the request size or reconfigure
> the kernel with larger SHMMAX.  To reduce the request size (currently
> 58302464 bytes), reduce PostgreSQL's shared memory usage, perhaps by
> reducing shared_buffers or max_connections.
>          If the request size is already small, it's possible that it is
> less than your kernel's SHMMIN parameter, in which case raising the
> request size or reconfiguring SHMMIN is called for.
>          The PostgreSQL documentation contains more information about
> shared memory configuration.
>
>
>
> I've set shared_buffer way down to next to nothing along with
> kernel.shmmax and kernel.shmall per some blogs. However, the same error
> persists, and I'm getting no where. I think ultimately the solution is
> to upgrade, but the devs may not be ready for an upgrade at this point.
> Any help would be greatly appreciated. Thanks!

You don't want to decrease kernel.shmmax you want to set it to the
request size:

sysctl -w kernel.shmmax=1146945536

shmmax is the only thing you really need to play with.

-Andy



Re: could not create shared memory segment: Invalid argument

От
Ryan King - NOAA Affiliate
Дата:
I tried that too - same result. I updated another box w/ the same issue to 9.4.4, and all is well there. Thanks for your reply. 

On Tue, Jul 14, 2015 at 8:59 AM, Andy Colson <andy@squeakycode.net> wrote:
On 7/13/2015 7:08 PM, Ryan King - NOAA Affiliate wrote:
Apologies ahead of time for not knowing which group to send to, but I
wanted to see if anyone has encountered and resolved this type of error.
I'm setting up postgresql 9.2 streaming replication on RH and after
copying the master data directory over to the slave, the psql service
refuses start and gives the following errors.



    2015-07-13 23:55:41.224 UTC FATAL:  could not create shared memory
segment: Invalid argument
    2015-07-13 23:55:41.224 UTC DETAIL:  Failed system call was
shmget(key=5432001, size=1146945536, 03600).
    2015-07-13 23:55:41.224 UTC HINT:  This error usually means that
PostgreSQL's request for a shared memory segment exceeded your kernel's
SHMMAX parameter.  You can either reduce the request size or reconfigure
the kernel with larger SHMMAX.  To reduce the request size (currently
1146945536 bytes), reduce PostgreSQL's shared memory usage, perhaps by
reducing shared_buffers or max_connections.
         If the request size is already small, it's possible that it is
less than your kernel's SHMMIN parameter, in which case raising the
request size or reconfiguring SHMMIN is called for.
         The PostgreSQL documentation contains more information about
shared memory configuration.
    2015-07-13 23:56:21.344 UTC FATAL:  could not create shared memory
segment: Invalid argument
    2015-07-13 23:56:21.344 UTC DETAIL:  Failed system call was
shmget(key=5432001, size=58302464, 03600).
    2015-07-13 23:56:21.344 UTC HINT:  This error usually means that
PostgreSQL's request for a shared memory segment exceeded your kernel's
SHMMAX parameter.  You can either reduce the request size or reconfigure
the kernel with larger SHMMAX.  To reduce the request size (currently
58302464 bytes), reduce PostgreSQL's shared memory usage, perhaps by
reducing shared_buffers or max_connections.
         If the request size is already small, it's possible that it is
less than your kernel's SHMMIN parameter, in which case raising the
request size or reconfiguring SHMMIN is called for.
         The PostgreSQL documentation contains more information about
shared memory configuration.



I've set shared_buffer way down to next to nothing along with
kernel.shmmax and kernel.shmall per some blogs. However, the same error
persists, and I'm getting no where. I think ultimately the solution is
to upgrade, but the devs may not be ready for an upgrade at this point.
Any help would be greatly appreciated. Thanks!

You don't want to decrease kernel.shmmax you want to set it to the request size:

sysctl -w kernel.shmmax=1146945536

shmmax is the only thing you really need to play with.

-Andy


Re: could not create shared memory segment: Invalid argument

От
Andy Colson
Дата:
> On Tue, Jul 14, 2015 at 8:59 AM, Andy Colson <andy@squeakycode.net
> <mailto:andy@squeakycode.net>> wrote:
>
>     On 7/13/2015 7:08 PM, Ryan King - NOAA Affiliate wrote:
>
>         Apologies ahead of time for not knowing which group to send to,
>         but I
>         wanted to see if anyone has encountered and resolved this type
>         of error.
>         I'm setting up postgresql 9.2 streaming replication on RH and after
>         copying the master data directory over to the slave, the psql
>         service
>         refuses start and gives the following errors.
>
>
>
>              2015-07-13 23:55:41.224 UTC FATAL:  could not create shared
>         memory
>         segment: Invalid argument
>              2015-07-13 23:55:41.224 UTC DETAIL:  Failed system call was
>         shmget(key=5432001, size=1146945536, 03600).
>              2015-07-13 23:55:41.224 UTC HINT:  This error usually means
>         that
>         PostgreSQL's request for a shared memory segment exceeded your
>         kernel's
>         SHMMAX parameter.  You can either reduce the request size or
>         reconfigure
>         the kernel with larger SHMMAX.  To reduce the request size
>         (currently
>         1146945536 bytes), reduce PostgreSQL's shared memory usage,
>         perhaps by
>         reducing shared_buffers or max_connections.
>                   If the request size is already small, it's possible
>         that it is
>         less than your kernel's SHMMIN parameter, in which case raising the
>         request size or reconfiguring SHMMIN is called for.
>                   The PostgreSQL documentation contains more information
>         about
>         shared memory configuration.
>              2015-07-13 23:56:21.344 UTC FATAL:  could not create shared
>         memory
>         segment: Invalid argument
>              2015-07-13 23:56:21.344 UTC DETAIL:  Failed system call was
>         shmget(key=5432001, size=58302464, 03600).
>              2015-07-13 23:56:21.344 UTC HINT:  This error usually means
>         that
>         PostgreSQL's request for a shared memory segment exceeded your
>         kernel's
>         SHMMAX parameter.  You can either reduce the request size or
>         reconfigure
>         the kernel with larger SHMMAX.  To reduce the request size
>         (currently
>         58302464 bytes), reduce PostgreSQL's shared memory usage, perhaps by
>         reducing shared_buffers or max_connections.
>                   If the request size is already small, it's possible
>         that it is
>         less than your kernel's SHMMIN parameter, in which case raising the
>         request size or reconfiguring SHMMIN is called for.
>                   The PostgreSQL documentation contains more information
>         about
>         shared memory configuration.
>
>
>
>         I've set shared_buffer way down to next to nothing along with
>         kernel.shmmax and kernel.shmall per some blogs. However, the
>         same error
>         persists, and I'm getting no where. I think ultimately the
>         solution is
>         to upgrade, but the devs may not be ready for an upgrade at this
>         point.
>         Any help would be greatly appreciated. Thanks!
>
>
>     You don't want to decrease kernel.shmmax you want to set it to the
>     request size:
>
>     sysctl -w kernel.shmmax=1146945536
>
>     shmmax is the only thing you really need to play with.
>
>     -Andy
>
>

On 7/15/2015 9:13 AM, Ryan King - NOAA Affiliate wrote:
 > I tried that too - same result. I updated another box w/ the same issue
 > to 9.4.4, and all is well there. Thanks for your reply.
 >


Ah, I assume then that something else is already using some shared memory.

PG needs:
>  To reduce the request size (currently 58302464 bytes),

That much shared memory *free*.  You can check current usage with:  ipcs -m

Add what PG needs to what you are already using, and you should be good
to go.

-Andy