Discussion:
[ADMIN] Postgres shared memory error
(too old to reply)
Kevin Kempter
2012-04-28 16:10:01 UTC
Permalink
All;

I just want to be sure that I'm not causing myself greif. I have a kvm
in the cloud that is supposed to have access to 32GB of ram. when I do a
top I only see 1GB of ram, I've pinged the hosting provider, maybe it
shows up as it's used?

Anyway when I try and start postgres I see this:
/
$ 2012-04-28 12:00:33 EDT [6429]: [1-1] FATAL: XX000: could not
create shared memory segment: Cannot allocate memory
2012-04-28 12:00:33 EDT [6429]: [2-1] DETAIL: Failed system call was
shmget(key=5432001, size=7700914176, 03600).
2012-04-28 12:00:33 EDT [6429]: [3-1] HINT: This error usually means
that PostgreSQL's request for a shared memory segment exceeded available
memory or swap space. To reduce the request size (currently 7700914176
bytes), reduce PostgreSQL's shared_buffers parameter (currently 917504)
and/or its max_connections parameter (currently 503).
The PostgreSQL documentation contains more information about
shared memory configuration.
2012-04-28 12:00:33 EDT [6429]: [4-1] LOCATION:
InternalIpcMemoryCreate, pg_shmem.c:178 /


Which means I should bump up shmmax like this:

/# sysctl -w kernel.shmmax=7700914176/


and add it to /etc/sysctl.conf:

/# tail /etc/sysctl.conf
kernel.msgmax = 65536

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

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

#PostgreSQL
kernel.shmmax = 7700914176 /


I assume I should have to tweak ONLY kernel.shmmax, am I correct?
I'm also assuming that this is a KVM cloud host provider issue, i.e. it
looks like I actually do not have 32G or ram. Does anyone disagree with
my conclusions?

Thanks in advance
Fernando Hevia
2012-04-28 16:32:33 UTC
Permalink
All;
I just want to be sure that I'm not causing myself greif. I have a kvm in
the cloud that is supposed to have access to 32GB of ram. when I do a top I
only see 1GB of ram, I've pinged the hosting provider, maybe it shows up as
it's used?
What does the 'free' command show?
*
$ 2012-04-28 12:00:33 EDT [6429]: [1-1] FATAL: XX000: could not create
shared memory segment: Cannot allocate memory
2012-04-28 12:00:33 EDT [6429]: [2-1] DETAIL: Failed system call was
shmget(key=5432001, size=7700914176,
03600).
2012-04-28 12:00:33 EDT [6429]: [3-1] HINT: This error usually means that
PostgreSQL's request for a shared memory segment exceeded available memory
or swap space. To reduce the request size (currently 7700914176 bytes),
reduce PostgreSQL's shared_buffers parameter (currently 917504) and/or its
max_connections parameter (currently
503).
The PostgreSQL documentation contains more information about
shared memory
configuration.
2012-04-28 12:00:33 EDT [6429]: [4-1] LOCATION: InternalIpcMemoryCreate,
pg_shmem.c:178 *
*# sysctl -w kernel.shmmax=7700914176*
*# tail
/etc/sysctl.conf
kernel.msgmax =
65536
# Controls the maximum shared segment size, in
bytes
kernel.shmmax =
68719476736
# Controls the maximum number of shared memory segments, in
pages
kernel.shmall =
4294967296
#PostgreSQL
kernel.shmmax = 7700914176 *
I assume I should have to tweak ONLY kernel.shmmax, am I correct?
Correct.
I'm also assuming that this is a KVM cloud host provider issue, i.e. it
looks like I actually do not have 32G or ram. Does anyone disagree with my
conclusions?
You haven't provided evidence on how much RAM your system sees. A free -m
will show the total memory the system has and is being used.

Regards.
Kevin Kempter
2012-04-28 16:37:58 UTC
Permalink
On Sat, Apr 28, 2012 at 13:10, Kevin Kempter
All;
I just want to be sure that I'm not causing myself greif. I have
a kvm in the cloud that is supposed to have access to 32GB of ram.
when I do a top I only see 1GB of ram, I've pinged the hosting
provider, maybe it shows up as it's used?
What does the 'free' command show?
/
$ 2012-04-28 12:00:33 EDT [6429]: [1-1] FATAL: XX000: could not
create shared memory segment: Cannot allocate memory
2012-04-28 12:00:33 EDT [6429]: [2-1] DETAIL: Failed system call
was shmget(key=5432001, size=7700914176, 03600).
2012-04-28 12:00:33 EDT [6429]: [3-1] HINT: This error usually
means that PostgreSQL's request for a shared memory segment
exceeded available memory or swap space. To reduce the request
size (currently 7700914176 bytes), reduce PostgreSQL's
shared_buffers parameter (currently 917504) and/or its
max_connections parameter (currently 503).
The PostgreSQL documentation contains more information
about shared memory configuration.
InternalIpcMemoryCreate, pg_shmem.c:178 /
/# sysctl -w kernel.shmmax=7700914176/
/# tail /etc/sysctl.conf
kernel.msgmax = 65536
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
#PostgreSQL
kernel.shmmax = 7700914176 /
I assume I should have to tweak ONLY kernel.shmmax, am I correct?
Correct.
I'm also assuming that this is a KVM cloud host provider issue,
i.e. it looks like I actually do not have 32G or ram. Does anyone
disagree with my conclusions?
You haven't provided evidence on how much RAM your system sees. A free
-m will show the total memory the system has and is being used.
Regards.
Free command:

/ # free
total used free shared buffers cached
Mem: 1020856 946804 74052 0 61280 796004
-/+ buffers/cache: 89520 931336
Swap: 0 0 0/
Fernando Hevia
2012-04-29 00:13:22 UTC
Permalink
* # free
total used free shared buffers cached
Mem: 1020856 946804 74052 0 61280 796004
-/+ buffers/cache: 89520 931336
Swap: 0 0 0*
You are right. Your system has only 1 GB RAM.

Loading...