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

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

Re: could not create shared memory segment: Invalid argument

От
Scott Whitney
Дата:
What is your kernel SHMMAX? Usually somewhere under /etc/sysconfig. Depends on your distro. This is telling you that your kernel does not have sufficient resources.

-------- Original message --------
From: Ryan King - NOAA Affiliate <ryan.king@noaa.gov>
Date: 07/13/2015 7:10 PM (GMT-06:00)
To: pgsql-general@postgresql.org, pgsql-admin@postgresql.org, pgsql-performance@postgresql.org
Subject: Re: [ADMIN] could not create shared memory segment: Invalid argument

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!


Journyx, Inc.
7600 Burnet Road #300
Austin, TX 78757
www.journyx.com

p 512.834.8888 
f 512-834-8858 

Do you receive our promotional emails? You can subscribe or unsubscribe to those emails at http://go.journyx.com/emailPreference/e/4932/714/ 

Re: could not create shared memory segment: Invalid argument

От
Ryan King - NOAA Affiliate
Дата:
Hi Scott. Removing the other groups and only copying admin. 

Here are the current settings - I know very low, but I just kept going downwards until there was no where else to go: 


# Controls the maximum shared segment size, in bytes
#kernel.shmmax = 68719476736 - orginal
#kernel.shmmax = 16833540096
kernel.shmmax = 168

# Controls the maximum number of shared memory segments, in pages
#kernel.shmall = 4294967296  - orginal
kernel.shmall = 4109751

Thanks


Ryan King

Internet Dissemination Group, Kansas City

Shared Infrastructure Services Branch

National Weather Service

Contractor / Insight Global Ace Info Solutions, Inc.


On Mon, Jul 13, 2015 at 7:15 PM, Scott Whitney <scott@journyx.com> wrote:
What is your kernel SHMMAX? Usually somewhere under /etc/sysconfig. Depends on your distro. This is telling you that your kernel does not have sufficient resources.

-------- Original message --------
From: Ryan King - NOAA Affiliate <ryan.king@noaa.gov>
Date: 07/13/2015 7:10 PM (GMT-06:00)
To: pgsql-general@postgresql.org, pgsql-admin@postgresql.org, pgsql-performance@postgresql.org
Subject: Re: [ADMIN] could not create shared memory segment: Invalid argument

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!


Journyx, Inc.
7600 Burnet Road #300
Austin, TX 78757
www.journyx.com

p 512.834.8888 
f 512-834-8858 

Do you receive our promotional emails? You can subscribe or unsubscribe to those emails at http://go.journyx.com/emailPreference/e/4932/714/ 

Re: could not create shared memory segment: Invalid argument

От
Scott Ribe
Дата:
On Jul 13, 2015, at 6:26 PM, Ryan King - NOAA Affiliate <ryan.king@noaa.gov> wrote:
>
> # Controls the maximum shared segment size, in bytes
> #kernel.shmmax = 68719476736 - orginal
> #kernel.shmmax = 16833540096
> kernel.shmmax = 168
>
> # Controls the maximum number of shared memory segments, in pages
> #kernel.shmall = 4294967296  - orginal
> kernel.shmall = 4109751

Wait, you need to be going *UP* on these. They need to be >= postgres's shared buffers + some minor other stuff.

--
Scott Ribe
scott_ribe@elevated-dev.com
http://www.elevated-dev.com/
https://www.linkedin.com/in/scottribe/
(303) 722-0567 voice







Re: could not create shared memory segment: Invalid argument

От
Ryan King - NOAA Affiliate
Дата:
Yeah thanks I see I was going the wrong way...thanks. 
So shared_buffers is 15gb and max_conn = 1000. 

However, after increasing, same issue. 

# Controls the maximum shared segment size, in bytes
#kernel.shmmax = 68719476736
kernel.shmmax = 268719476736

# Controls the maximum number of shared memory segments, in pages
#kernel.shmall = 4294967296
kernel.shmall = 4294967296

This should be plenty...

On Mon, Jul 13, 2015 at 7:43 PM, Scott Ribe <scott_ribe@elevated-dev.com> wrote:
On Jul 13, 2015, at 6:26 PM, Ryan King - NOAA Affiliate <ryan.king@noaa.gov> wrote:
>
> # Controls the maximum shared segment size, in bytes
> #kernel.shmmax = 68719476736 - orginal
> #kernel.shmmax = 16833540096
> kernel.shmmax = 168
>
> # Controls the maximum number of shared memory segments, in pages
> #kernel.shmall = 4294967296  - orginal
> kernel.shmall = 4109751

Wait, you need to be going *UP* on these. They need to be >= postgres's shared buffers + some minor other stuff.

--
Scott Ribe
scott_ribe@elevated-dev.com
http://www.elevated-dev.com/
https://www.linkedin.com/in/scottribe/
(303) 722-0567 voice






Re: could not create shared memory segment: Invalid argument

От
Scott Ribe
Дата:
On Jul 13, 2015, at 6:49 PM, Ryan King - NOAA Affiliate <ryan.king@noaa.gov> wrote:
>
> Yeah thanks I see I was going the wrong way...thanks.
> So shared_buffers is 15gb and max_conn = 1000.

OK, you haven't shared your OS or hardware setup, but a few general points:

- 15GB is large for PG shared buffers; it usually doesn't help to go that high; remember, shared buffers is a kind of
workingcache, not the whole cache, PG depends on the OS caching of recently-used files; 

- Your shmall is only 16GB. PG may not be the only user of shared memory. It doesn't make sense to have shmall * page
size< shmmax. 

- Also, does your platform have some absolute upper limit on shmmax? 250GB seems awfully high...

- With 1,000 clients, you'd likely benefit from connection pooling; after you get things up, you should consider
pgbouncer.

--
Scott Ribe
scott_ribe@elevated-dev.com
http://www.elevated-dev.com/
https://www.linkedin.com/in/scottribe/
(303) 722-0567 voice