public inbox for [email protected]
help / color / mirror / Atom feedMemory issues with PostgreSQL 15
9+ messages / 5 participants
[nested] [flat]
* Memory issues with PostgreSQL 15
@ 2024-05-27 11:32 Christian Schröder <[email protected]>
2024-05-28 17:14 ` Re: Memory issues with PostgreSQL 15 Francisco Olarte <[email protected]>
2024-05-29 09:40 ` Re: Memory issues with PostgreSQL 15 Muhammad Salahuddin Manzoor <[email protected]>
2024-05-30 06:25 ` Re: Memory issues with PostgreSQL 15 Andrea Gelmini <[email protected]>
0 siblings, 3 replies; 9+ messages in thread
From: Christian Schröder @ 2024-05-27 11:32 UTC (permalink / raw)
To: [email protected] <[email protected]>; +Cc: Eric Wong <[email protected]>
Hi all,
We migrated from PostgreSQL 9.4 to PostgreSQL 15 a while ago. Since then, we have a lot of memory issues in our QA environment (which is a bit tense in resources). We did not have these problems before the migration, and we do not have them in our production environment, which has a lot more memory. So, it is not super critical for us, but I would still like to understand better how we can improve our configuration.
Our PostgreSQL version is "PostgreSQL 15.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit". The database server is a dedicated server with 15 GB RAM (and 4 cores, if this matters).
We used the following settings:
shared_buffers = 4GB
work_mem = 4MB
After a while, we saw the following error in the logs:
<2024-05-20 12:01:03 CEST - > LOG: could not fork autovacuum worker process: Cannot allocate memory
However, according to "free", a lot of memory was available:
# free -m
total used free shared buff/cache available
Mem: 15882 4992 463 4195 10427 6365
Swap: 1999 271 1728
Our Grafana charts showed a slow increase in memory consumption until it plateaus at 4.66 GB.
We also found the following error:
<2024-05-21 11:34:46 CEST - mailprocessor> ERROR: could not resize shared memory segment "/PostgreSQL.2448337832" to 182656 bytes: No space left on device
I thought this could all be related to our "shared_buffers" setting, so I increased it to 8 GB. This almost immediately (after a few minutes) gave me these errors:
<2024-05-27 11:45:59 CEST - > ERROR: out of memory
<2024-05-27 11:45:59 CEST - > DETAIL: Failed on request of size 201088574 in memory context "TopTransactionContext".
...
<2024-05-27 11:58:02 CEST - > ERROR: out of memory
<2024-05-27 11:58:02 CEST - > DETAIL: Failed while creating memory context "dynahash".
<2024-05-27 11:58:02 CEST - > LOG: background worker "parallel worker" (PID 21480) exited with exit code 1
...
<2024-05-27 12:01:02 CEST - > LOG: could not fork new process for connection: Cannot allocate memory
<2024-05-27 12:01:03 CEST - > LOG: could not fork autovacuum worker process: Cannot allocate memory
<2024-05-27 12:02:02 CEST - > LOG: could not fork new process for connection: Cannot allocate memory
Since this seemed worse than before, I changed the setting back to 4 GB. I noticed that "free" now reports even more available memory:
# free -m
total used free shared buff/cache available
Mem: 15882 621 320 2256 14940 12674
Swap: 1999 199 1800
So, does the "shared_buffers" setting have the opposite effect than I though? If I correctly remember similar discussions years ago, the database needs both "normal" and shared memory. By increasing the "shared_buffers" to 8 GB, I may have deprived it of "normal" memory. On the other hand, I would have expected the remaining 7 GB to still be enough.
At this point, I am out of ideas. I clearly seem to misunderstand how the database manages its memory. This may have changed between 9.4 and 15, so my prior knowledge may be useless. I definitely need some help. ☹
Thanks in advance,
Christian
----------------------------------------------
SUPPORT:
For any issues, inquiries, or assistance, please contact our support team at [email protected]. Our dedicated team is available to help you and provide prompt assistance.
CONFIDENTIALITY NOTICE:
This email and any attachments are confidential and intended solely for the use of the individual or entity to whom it is addressed. If you have received this email in error, please notify the sender immediately and delete it from your system.
^ permalink raw reply [nested|flat] 9+ messages in thread
* Re: Memory issues with PostgreSQL 15
2024-05-27 11:32 Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
@ 2024-05-28 17:14 ` Francisco Olarte <[email protected]>
2024-05-28 22:59 ` RE: Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
2 siblings, 1 reply; 9+ messages in thread
From: Francisco Olarte @ 2024-05-28 17:14 UTC (permalink / raw)
To: Christian Schröder <[email protected]>; +Cc: [email protected] <[email protected]>; Eric Wong <[email protected]>
Hi Christian:
On Tue, 28 May 2024 at 18:40, Christian Schröder
<[email protected]> wrote:
> <2024-05-21 11:34:46 CEST - mailprocessor> ERROR: could not resize shared memory segment "/PostgreSQL.2448337832" to 182656 bytes: No space left on device
This hints at some shm function getting an ENOSPC: Coupled with...
> I thought this could all be related to our "shared_buffers" setting, so I increased it to 8 GB. This almost immediately (after a few minutes) gave me these errors:
A faster fail when increasing it I would start by checking your IPC
shared memory limits are ok, especially if you upgraded something in
the OS when going from 9 to 15, which seems likely.
IIRC in linux you can read them in /proc/sys/kernel/shm*, and they
were configured via sysctl.
Francisco Olarte.
^ permalink raw reply [nested|flat] 9+ messages in thread
* RE: Memory issues with PostgreSQL 15
2024-05-27 11:32 Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
2024-05-28 17:14 ` Re: Memory issues with PostgreSQL 15 Francisco Olarte <[email protected]>
@ 2024-05-28 22:59 ` Christian Schröder <[email protected]>
2024-05-29 08:23 ` Re: Memory issues with PostgreSQL 15 Francisco Olarte <[email protected]>
2024-05-29 21:43 ` Re: Memory issues with PostgreSQL 15 Tom Lane <[email protected]>
0 siblings, 2 replies; 9+ messages in thread
From: Christian Schröder @ 2024-05-28 22:59 UTC (permalink / raw)
To: Francisco Olarte <[email protected]>; +Cc: [email protected] <[email protected]>; Eric Wong <[email protected]>
Hi Francisco,
Thank you for your advice. I used "ipcs" to get more readable information about the shared memory:
# ipcs -m -l --human
------ Shared Memory Limits --------
max number of segments = 4096
max seg size = 16E
max total shared memory = 16E
min seg size = 1B
# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x04000194 35 postgres 600 56 19
# ipcs -m -i 35
Shared memory Segment shmid=35
uid=26 gid=26 cuid=26 cgid=26
mode=0600 access_perms=0600
bytes=56 lpid=7653 cpid=3875 nattch=19
att_time=Tue May 28 22:56:35 2024
det_time=Tue May 28 22:56:35 2024
change_time=Tue May 28 07:59:59 2024
As far as I understand, there is no upper limit to the size of the shared memory. The database only holds a single shared memory segment, which doesn't seem to have a relevant size.
I am surprised to see this since I would have expected much more shared memory to be used by the database. Is there anything in the configuration that prevents the shared memory from being used?
Best,
Christian
-----Original Message-----
From: Francisco Olarte <[email protected]>
Sent: Tuesday, May 28, 2024 7:15 PM
To: Christian Schröder <[email protected]>
Cc: [email protected]; Eric Wong <[email protected]>
Subject: Re: Memory issues with PostgreSQL 15
[EXTERNAL]
Hi Christian:
On Tue, 28 May 2024 at 18:40, Christian Schröder <[email protected]> wrote:
> <2024-05-21 11:34:46 CEST - mailprocessor> ERROR: could not resize
> shared memory segment "/PostgreSQL.2448337832" to 182656 bytes: No
> space left on device
This hints at some shm function getting an ENOSPC: Coupled with...
> I thought this could all be related to our "shared_buffers" setting, so I increased it to 8 GB. This almost immediately (after a few minutes) gave me these errors:
A faster fail when increasing it I would start by checking your IPC shared memory limits are ok, especially if you upgraded something in the OS when going from 9 to 15, which seems likely.
IIRC in linux you can read them in /proc/sys/kernel/shm*, and they were configured via sysctl.
Francisco Olarte.
----------------------------------------------
SUPPORT:
For any issues, inquiries, or assistance, please contact our support team at [email protected]. Our dedicated team is available to help you and provide prompt assistance.
CONFIDENTIALITY NOTICE:
This email and any attachments are confidential and intended solely for the use of the individual or entity to whom it is addressed. If you have received this email in error, please notify the sender immediately and delete it from your system.
^ permalink raw reply [nested|flat] 9+ messages in thread
* Re: Memory issues with PostgreSQL 15
2024-05-27 11:32 Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
2024-05-28 17:14 ` Re: Memory issues with PostgreSQL 15 Francisco Olarte <[email protected]>
2024-05-28 22:59 ` RE: Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
@ 2024-05-29 08:23 ` Francisco Olarte <[email protected]>
2024-05-30 07:37 ` RE: Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
1 sibling, 1 reply; 9+ messages in thread
From: Francisco Olarte @ 2024-05-29 08:23 UTC (permalink / raw)
To: Christian Schröder <[email protected]>; +Cc: [email protected] <[email protected]>; Eric Wong <[email protected]>
Hi Christian:
On Wed, 29 May 2024 at 00:59, Christian Schröder
<[email protected]> wrote:
> Thank you for your advice. I used "ipcs" to get more readable information about the shared memory:
...
> As far as I understand, there is no upper limit to the size of the shared memory. The database only holds a single shared memory segment, which doesn't seem to have a relevant size.
Seems the same to me, so I will disregard that.
> I am surprised to see this since I would have expected much more shared memory to be used by the database. Is there anything in the configuration that prevents the shared memory from being used?
I am not too current with postgres, that one was a thing which
happened to me when I did more administration, and is one you always
want to check. I assume you have all checked, but I would follow by
insuring every mounted partition in your system has space. I am not
current on the details, but I know Pg can be mmaping things and doing
other stuff. Your problem seems more of resource exhaustion, so I
would follow by checking that, both disk, tmpfs and all the other
stuff. I cannot give you advice on that as it depends a lot on your
server configuration and from the age in the mssages I suspect you
have the usual suspects debugged. But as you have a configuration
crahsing in minutes and it seems to be a dev server you could do it
easily.
Sorry.
Francisco Olarte.
^ permalink raw reply [nested|flat] 9+ messages in thread
* RE: Memory issues with PostgreSQL 15
2024-05-27 11:32 Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
2024-05-28 17:14 ` Re: Memory issues with PostgreSQL 15 Francisco Olarte <[email protected]>
2024-05-28 22:59 ` RE: Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
2024-05-29 08:23 ` Re: Memory issues with PostgreSQL 15 Francisco Olarte <[email protected]>
@ 2024-05-30 07:37 ` Christian Schröder <[email protected]>
2024-05-30 10:13 ` Re: Memory issues with PostgreSQL 15 Francisco Olarte <[email protected]>
0 siblings, 1 reply; 9+ messages in thread
From: Christian Schröder @ 2024-05-30 07:37 UTC (permalink / raw)
To: Francisco Olarte <[email protected]>; +Cc: [email protected] <[email protected]>; Eric Wong <[email protected]>
Hi Francisco,
Unfortunately, all disks have plenty of free space, so this can be ruled out as a reason.
I will follow up on the other suggestions from the list.
Best,
Christian
-----Original Message-----
From: Francisco Olarte <[email protected]>
Sent: Wednesday, May 29, 2024 10:24 AM
To: Christian Schröder <[email protected]>
Cc: [email protected]; Eric Wong <[email protected]>
Subject: Re: Memory issues with PostgreSQL 15
[EXTERNAL]
Hi Christian:
On Wed, 29 May 2024 at 00:59, Christian Schröder <[email protected]> wrote:
> Thank you for your advice. I used "ipcs" to get more readable information about the shared memory:
...
> As far as I understand, there is no upper limit to the size of the shared memory. The database only holds a single shared memory segment, which doesn't seem to have a relevant size.
Seems the same to me, so I will disregard that.
> I am surprised to see this since I would have expected much more shared memory to be used by the database. Is there anything in the configuration that prevents the shared memory from being used?
I am not too current with postgres, that one was a thing which happened to me when I did more administration, and is one you always want to check. I assume you have all checked, but I would follow by insuring every mounted partition in your system has space. I am not current on the details, but I know Pg can be mmaping things and doing other stuff. Your problem seems more of resource exhaustion, so I would follow by checking that, both disk, tmpfs and all the other stuff. I cannot give you advice on that as it depends a lot on your server configuration and from the age in the mssages I suspect you have the usual suspects debugged. But as you have a configuration crahsing in minutes and it seems to be a dev server you could do it easily.
Sorry.
Francisco Olarte.
----------------------------------------------
SUPPORT:
For any issues, inquiries, or assistance, please contact our support team at [email protected]. Our dedicated team is available to help you and provide prompt assistance.
CONFIDENTIALITY NOTICE:
This email and any attachments are confidential and intended solely for the use of the individual or entity to whom it is addressed. If you have received this email in error, please notify the sender immediately and delete it from your system.
^ permalink raw reply [nested|flat] 9+ messages in thread
* Re: Memory issues with PostgreSQL 15
2024-05-27 11:32 Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
2024-05-28 17:14 ` Re: Memory issues with PostgreSQL 15 Francisco Olarte <[email protected]>
2024-05-28 22:59 ` RE: Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
2024-05-29 08:23 ` Re: Memory issues with PostgreSQL 15 Francisco Olarte <[email protected]>
2024-05-30 07:37 ` RE: Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
@ 2024-05-30 10:13 ` Francisco Olarte <[email protected]>
0 siblings, 0 replies; 9+ messages in thread
From: Francisco Olarte @ 2024-05-30 10:13 UTC (permalink / raw)
To: Christian Schröder <[email protected]>; +Cc: [email protected] <[email protected]>; Eric Wong <[email protected]>
On Thu, 30 May 2024 at 09:37, Christian Schröder
<[email protected]> wrote:
> Unfortunately, all disks have plenty of free space, so this can be ruled out as a reason.
> I will follow up on the other suggestions from the list.
Do not forget to check all mounted filesystems, not only disks.
Specially /dev/shm, IIRC its mounted size is one limit for posix
shared memory.
Francisco Olarte.
^ permalink raw reply [nested|flat] 9+ messages in thread
* Re: Memory issues with PostgreSQL 15
2024-05-27 11:32 Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
2024-05-28 17:14 ` Re: Memory issues with PostgreSQL 15 Francisco Olarte <[email protected]>
2024-05-28 22:59 ` RE: Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
@ 2024-05-29 21:43 ` Tom Lane <[email protected]>
1 sibling, 0 replies; 9+ messages in thread
From: Tom Lane @ 2024-05-29 21:43 UTC (permalink / raw)
To: Christian Schröder <[email protected]>; +Cc: Francisco Olarte <[email protected]>; [email protected] <[email protected]>; Eric Wong <[email protected]>
=?utf-8?B?Q2hyaXN0aWFuIFNjaHLDtmRlcg==?= <[email protected]> writes:
> # ipcs -m
> ------ Shared Memory Segments --------
> key shmid owner perms bytes nattch status
> 0x04000194 35 postgres 600 56 19
> I am surprised to see this since I would have expected much more shared memory to be used by the database. Is there anything in the configuration that prevents the shared memory from being used?
SysV shared memory isn't that relevant to Postgres anymore. Most
of what we allocate goes into POSIX-style shared memory segments,
which are not shown by "ipcs". We do still create one small
fixed-size data structure in SysV memory, which is what you're
seeing here, for arcane reasons having to do with the lifespan of
the shared memory segments being different in those two APIs.
>> <2024-05-21 11:34:46 CEST - mailprocessor> ERROR: could not resize
>> shared memory segment "/PostgreSQL.2448337832" to 182656 bytes: No
>> space left on device
This seems to indicate that you're hitting some kernel limit on
the amount of POSIX shared memory. Not sure where to look for
that.
regards, tom lane
^ permalink raw reply [nested|flat] 9+ messages in thread
* Re: Memory issues with PostgreSQL 15
2024-05-27 11:32 Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
@ 2024-05-29 09:40 ` Muhammad Salahuddin Manzoor <[email protected]>
2 siblings, 0 replies; 9+ messages in thread
From: Muhammad Salahuddin Manzoor @ 2024-05-29 09:40 UTC (permalink / raw)
To: Christian Schröder <[email protected]>; +Cc: pgsql-general <[email protected]>; Eric Wong <[email protected]>
Greetings,
The error message you encountered, "could not fork autovacuum worker
process: Cannot allocate memory," indicates that your PostgreSQL server
attempted to start an autovacuum worker process but failed because the
system ran out of memory.
Steps to verify.
1 Check system available memory with commands.
free -m
top
2. Check PG configurations.
shared_buffers --Typically 25% of total mem.
work_mem
maintenance_work_mem--For maintenance op like autovaccume create index etc.
Increase it to 64MB or appropriate to your requirement.
max_connections
Monitor /var/log/messages file for errors.
2024-05-21 11:34:46 CEST - mailprocessor> ERROR: could not resize shared
memory segment "/PostgreSQL.2448337832" to 182656 bytes: No space left on
device
Check share memory limits.
/etc/sysctl.conf
kernel.shmmax = 68719476736 # Example value, adjust as needed
kernel.shmall = 16777216 # Example value, adjust as needed
Restart system and db
Ensure you have enough disk space available check and monitor disk space
with command
df -h
Reduce max_parallel_workers_per_gather = 2;
If it is set to high value.
I think setting up OS parameter.
Increasing maintenance mem value and reducing max paralell workers xan help
in solution.
Regards,
Salahuddin.
On Tue, 28 May 2024, 21:40 Christian Schröder, <[email protected]>
wrote:
> Hi all,
> We migrated from PostgreSQL 9.4 to PostgreSQL 15 a while ago. Since then,
> we have a lot of memory issues in our QA environment (which is a bit tense
> in resources). We did not have these problems before the migration, and we
> do not have them in our production environment, which has a lot more
> memory. So, it is not super critical for us, but I would still like to
> understand better how we can improve our configuration.
>
> Our PostgreSQL version is "PostgreSQL 15.5 on x86_64-pc-linux-gnu,
> compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit". The
> database server is a dedicated server with 15 GB RAM (and 4 cores, if this
> matters).
> We used the following settings:
> shared_buffers = 4GB
> work_mem = 4MB
>
> After a while, we saw the following error in the logs:
>
> <2024-05-20 12:01:03 CEST - > LOG: could not fork autovacuum worker
> process: Cannot allocate memory
>
> However, according to "free", a lot of memory was available:
>
> # free -m
> total used free shared buff/cache
> available
> Mem: 15882 4992 463 4195 10427
> 6365
> Swap: 1999 271 1728
>
> Our Grafana charts showed a slow increase in memory consumption until it
> plateaus at 4.66 GB.
> We also found the following error:
>
> <2024-05-21 11:34:46 CEST - mailprocessor> ERROR: could not resize shared
> memory segment "/PostgreSQL.2448337832" to 182656 bytes: No space left on
> device
>
> I thought this could all be related to our "shared_buffers" setting, so I
> increased it to 8 GB. This almost immediately (after a few minutes) gave me
> these errors:
>
> <2024-05-27 11:45:59 CEST - > ERROR: out of memory
> <2024-05-27 11:45:59 CEST - > DETAIL: Failed on request of size 201088574
> in memory context "TopTransactionContext".
> ...
> <2024-05-27 11:58:02 CEST - > ERROR: out of memory
> <2024-05-27 11:58:02 CEST - > DETAIL: Failed while creating memory
> context "dynahash".
> <2024-05-27 11:58:02 CEST - > LOG: background worker "parallel worker"
> (PID 21480) exited with exit code 1
> ...
> <2024-05-27 12:01:02 CEST - > LOG: could not fork new process for
> connection: Cannot allocate memory
> <2024-05-27 12:01:03 CEST - > LOG: could not fork autovacuum worker
> process: Cannot allocate memory
> <2024-05-27 12:02:02 CEST - > LOG: could not fork new process for
> connection: Cannot allocate memory
>
> Since this seemed worse than before, I changed the setting back to 4 GB. I
> noticed that "free" now reports even more available memory:
>
> # free -m
> total used free shared buff/cache
> available
> Mem: 15882 621 320 2256 14940
> 12674
> Swap: 1999 199 1800
>
> So, does the "shared_buffers" setting have the opposite effect than I
> though? If I correctly remember similar discussions years ago, the database
> needs both "normal" and shared memory. By increasing the "shared_buffers"
> to 8 GB, I may have deprived it of "normal" memory. On the other hand, I
> would have expected the remaining 7 GB to still be enough.
>
> At this point, I am out of ideas. I clearly seem to misunderstand how the
> database manages its memory. This may have changed between 9.4 and 15, so
> my prior knowledge may be useless. I definitely need some help. ☹
>
> Thanks in advance,
> Christian
>
>
> ----------------------------------------------
> SUPPORT:
> For any issues, inquiries, or assistance, please contact our support team
> at [email protected]. Our dedicated team is available to help you and
> provide prompt assistance.
>
> CONFIDENTIALITY NOTICE:
> This email and any attachments are confidential and intended solely for
> the use of the individual or entity to whom it is addressed. If you have
> received this email in error, please notify the sender immediately and
> delete it from your system.
>
^ permalink raw reply [nested|flat] 9+ messages in thread
* Re: Memory issues with PostgreSQL 15
2024-05-27 11:32 Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
@ 2024-05-30 06:25 ` Andrea Gelmini <[email protected]>
2 siblings, 0 replies; 9+ messages in thread
From: Andrea Gelmini @ 2024-05-30 06:25 UTC (permalink / raw)
To: Christian Schröder <[email protected]>; +Cc: [email protected] <[email protected]>; Eric Wong <[email protected]>
Il giorno mar 28 mag 2024 alle ore 18:40 Christian Schröder
<[email protected]> ha scritto:
> Our PostgreSQL version is "PostgreSQL 15.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit". The database server is a dedicated server with 15 GB RAM (and 4 cores, if this matters).
Maybe you have PostgreSQL running inside a container with capped
resources (I saw this on some recent distro, running it from systemd)?
^ permalink raw reply [nested|flat] 9+ messages in thread
end of thread, other threads:[~2024-05-30 10:13 UTC | newest]
Thread overview: 9+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2024-05-27 11:32 Memory issues with PostgreSQL 15 Christian Schröder <[email protected]>
2024-05-28 17:14 ` Francisco Olarte <[email protected]>
2024-05-28 22:59 ` Christian Schröder <[email protected]>
2024-05-29 08:23 ` Francisco Olarte <[email protected]>
2024-05-30 07:37 ` Christian Schröder <[email protected]>
2024-05-30 10:13 ` Francisco Olarte <[email protected]>
2024-05-29 21:43 ` Tom Lane <[email protected]>
2024-05-29 09:40 ` Muhammad Salahuddin Manzoor <[email protected]>
2024-05-30 06:25 ` Andrea Gelmini <[email protected]>
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox