Thread: Re: could not create shared memory segment: Invalid argument
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
-------- 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
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/
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 argumentApologies 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 argument2015-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 argument2015-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.p 512.834.8888f 512-834-8858Do you receive our promotional emails? You can subscribe or unsubscribe to those emails at http://go.journyx.com/emailPreference/e/4932/714/
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
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
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