[linux-l] Service Speicherlimit (Cluster)

Peter Rader p.rader at gmx.net
Di Jan 7 13:03:45 CET 2020


In meinem Datenbankcluster bekomme ich einen Knoten (von zwei Knoten insgesammt) nicht zum laufen.
 
Befehle:
:# service postgresql restart
:# pg_lsclusters
9.4 main    5432 online postgres /var/lib/postgresql/9.4/main    /var/log/postgresql/postgresql-9.4-main.log
9.4 repgtv  5433 down   postgres /var/lib/postgresql/9.4/repgtv /var/log/postgresql/postgresql-9.4-repgtv.log
 
In den logs steht etwas von Speicherproblemen ab ~41 Megabyte:

 
:# systemctl status postgresql at 9.4-repgtv.service
? postgresql at 9.4-repgtv.service - PostgreSQL Cluster 9.4-repgtv
   Loaded: loaded (/lib/systemd/system/postgresql at .service; indirect; vendor preset: enabled)
   Active: failed (Result: protocol) since Tue 2020-01-07 12:50:01 CET; 4min 11s ago
  Process: 6187 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 9.4-repgtv start (code=exited, status=1/FAILURE)
Jan 07 12:50:01 rmktt-036 systemd[1]: Starting PostgreSQL Cluster 9.4-repgtv...
Jan 07 12:50:01 rmktt-036 postgresql at 9.4-repgtv[6187]: The PostgreSQL server failed to start. Please check the log output:
Jan 07 12:50:01 rmktt-036 postgresql at 9.4-repgtv[6187]: 2020-01-07 12:50:01 CET [6197-1] FATAL:  could not map anonymous shared memory: Cannot allocate memory
Jan 07 12:50:01 rmktt-036 postgresql at 9.4-repgtv[6187]: 2020-01-07 12:50:01 CET [6197-2] HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently 41787392 bytes), reduce PostgreSQL's shared memory usag
Jan 07 12:50:01 rmktt-036 systemd[1]: postgresql at 9.4-repgtv.service: Can't open PID file /run/postgresql/9.4-repgtv.pid (yet?) after start: No such file or directory
Jan 07 12:50:01 rmktt-036 systemd[1]: postgresql at 9.4-repgtv.service: Failed with result 'protocol'.
Jan 07 12:50:01 rmktt-036 systemd[1]: Failed to start PostgreSQL Cluster 9.4-repgtv.
 
Ich dachte zuerst an systemd-prozesslimitierung und setzte das speicherlimit auf 4 Gigabyte (übertrieben aber zur untersuchung ok):
 

:# cat /lib/systemd/system/postgresql.service
# systemd service for managing all PostgreSQL clusters on the system. This
# service is actually a systemd target, but we are using a service since
# targets cannot be reloaded.
[Unit]
Description=PostgreSQL RDBMS
[Service]
Type=oneshot
ExecStart=/bin/true
ExecReload=/bin/true
RemainAfterExit=on
MemoryLimit=4000M
[Install]
WantedBy=multi-user.target
 
Der Fehler ging aber nicht weg. Dann dachte ich an den Prozessbesitzer und setzte seinen Speicher rauf:
 
:# cat /etc/security/limits.conf
postgres        hard    as      4000000
 
Der Fehler ging aber immer noch nicht weg. 
 
Jemand eine Idee?
 
Kind regards

Peter Rader
--
Fachinformatiker AE / IT Software Developer
Peter Rader
Wilsnacker Strasse 17
10559 Berlin - GERMANY
Tel: 0049 (0)30 / 20 9930560
Fax: 0049 (0)30 / 20 9930561
Handy: 0049 (0)176 / 8 7521576


Mehr Informationen über die Mailingliste linux-l