PostgreSQL stürzt ab

Hi Jungs,

und zwar hab ich einen Windows 2003 Server, PostgreSQL (intel Quad 2,4, 4 GB RAM)

Folgende Änderungen hab ich vorgenommen:

max_connections=500
shared_buffers=128MB


So, nach einer bestimmten Zeit, (Server Auslastung bei 30%) stoppt einfach der PostgreSQL Service, den ich dann neu starten muss. :frowning:

Hat jemand eine Idee wo man dem Problem näher kommen kann?

Würde mich über ein paar Ideen freuen.

Gruß Centext

hmm,
gibts unter windows belastbare logfiles?
was sagt denn die ereignisanzeige und das postgres log?

hmm, meine Loggs sagen “Exit code 3”

Log:

2008-01-04 16:41:38 FATAL: the database system is starting up

2008-01-04 16:41:38 FATAL: the database system is starting up

2008-01-04 16:41:38 FATAL: the database system is starting up

2008-01-04 16:41:38 FATAL: the database system is starting up

2008-01-04 16:41:38 LOG: database system was interrupted at 2008-01-04 16:04:30

2008-01-04 16:41:38 LOG: could not open file “pg_xlog/000000010000000800000018” (log file 8, segment 24): No such file or directory

2008-01-04 16:41:38 LOG: invalid primary checkpoint record

2008-01-04 16:41:38 LOG: could not open file “pg_xlog/000000010000000800000015” (log file 8, segment 21): No such file or directory

2008-01-04 16:41:38 LOG: invalid secondary checkpoint record

2008-01-04 16:41:38 PANIC: could not locate a valid checkpoint record

2008-01-04 16:41:38 FATAL: the database system is starting up




This application has requested the Runtime to terminate it in an unusual way.

Please contact the application’s support team for more information.


2008-01-04 16:41:38 FATAL: the database system is starting up

2008-01-04 16:41:38 FATAL: the database system is starting up

2008-01-04 16:41:38 FATAL: the database system is starting up

2008-01-04 16:41:38 LOG: startup process (PID 4084) exited with exit code 3

2008-01-04 16:41:38 LOG: aborting startup due to startup process failure

2008-01-04 16:41:38 FATAL: the database system is starting up

2008-01-04 16:41:38 FATAL: the database system is starting up

2008-01-04 16:41:38 FATAL: the database system is starting up

2008-01-04 16:41:38 FATAL: the database system is starting up

2008-01-04 16:41:38 FATAL: the database system is starting up

2008-01-04 16:41:38 FATAL: the database system is starting up

2008-01-04 16:41:39 LOG: logger shutting down

Ahh, nachdem ich mit den Werten max_connections und shared_buffers rumgespielt habe funktioniert gar nix mehr. Datenbank lässt sich gar nicht mehr starten, selbst die org. postgres.conf funktioniert nicht.

Letzte Log-Version:

2008-01-04 16:52:01 LOG: database system was interrupted at 2008-01-04 16:04:30

2008-01-04 16:52:01 LOG: could not open file “pg_xlog/000000010000000800000018” (log file 8, segment 24): No such file or directory

2008-01-04 16:52:01 LOG: invalid primary checkpoint record

2008-01-04 16:52:01 LOG: could not open file “pg_xlog/000000010000000800000015” (log file 8, segment 21): No such file or directory

2008-01-04 16:52:01 LOG: invalid secondary checkpoint record

2008-01-04 16:52:01 PANIC: could not locate a valid checkpoint record




This application has requested the Runtime to terminate it in an unusual way.

Please contact the application’s support team for more information.


2008-01-04 16:52:01 LOG: startup process (PID 4068) exited with exit code 3

2008-01-04 16:52:01 LOG: aborting startup due to startup process failure

2008-01-04 16:52:01 FATAL: the database system is starting up

FATAL: could not reattach to shared memory (key=5432001, addr=01370000): No such file or directory

FATAL: could not reattach to shared memory (key=5432001, addr=01370000): No such file or directory

FATAL: could not reattach to shared memory (key=5432001, addr=01370000): No such file or directory

FATAL: could not reattach to shared memory (key=5432001, addr=01370000): No such file or directory

FATAL: could not reattach to shared memory (key=5432001, addr=01370000): No such file or directory

FATAL: could not reattach to shared memory (key=5432001, addr=01370000): No such file or directory

FATAL: could not reattach to shared memory (key=5432001, addr=01370000): No such file or directory

FATAL: could not reattach to shared memory (key=5432001, addr=01370000): No such file or directory

FATAL: could not reattach to shared memory (key=5432001, addr=01370000): No such file or directory

FATAL: could not reattach to shared memory (key=5432001, addr=01370000): No such file or directory

FATAL: could not reattach to shared memory (key=5432001, addr=01370000): No such file or directory

FATAL: could not reattach to shared memory (key=5432001, addr=01370000): No such file or directory

2008-01-04 16:52:02 LOG: logger shutting down

Kann jemand helfen? :frowning:

Damit überforderst Du Windows.
Re: 8.2.3: Server crashes on Windows using Eclipse/Junit

Solltest Du wirklich so viele Verbindungen benötigen, wäre ein Wechsel des OS angeraten.


Andreas

Okay Ubuntu 64 sollte okay sein?

PS: hab gerade unter Windows versucht per pg_resetxlog -f data die datenbank erneut zu starten.

So nun geht sie wieder, aber die Tabellen und datenbanken sind teilweise alle Weg… :astonished:

Ahhhh 10GB Daten weg :astonished: :astonished:

Das ist bitter, aber zum Glück hast Du ja ein Backup.

Andreas

Das Stimmt. Wie regelt man eig. ein Backup von über 30 GB? Über das standard Dump Verfahren? Dauert doch teilweise ewig ein solches backup zu machen? Und dafür liegt ja dann die gesamte DB auf Ice?

PostgreSQL: Documentation: Manuals: PostgreSQL 8.2: Continuous Archiving and Point-In-Time Recovery (PITR)

Andreas

Ähm, sorry, wenn ihr mit Produktionsdaten arbeitet und erst recht mit dieser Menge, solltet ihr jemanden zur Hand haben, der sich ein gutes Stück mit PostgreSQl auskennt. Das ist dann schliesslich eure Arbeitsgrundlage.

Das Logfile sagt eigentlich sehr eindeutig, das da mindestens 2 WAL Dateien fehlen, wahrscheinlich die dazwischen auch und wer weiss, wieviele drumherum. Die große Frage, die sich stellt, ist: wo sind diese Dateien verschwunden? Das hat recht wenig mit PostgreSQL sondern eher mit Windows zu tun, wenn dort Dateien verschwinden … und ohne diese Dateien will PostgreSQL nicht mehr starten, weil es keinen konsistenten Datenbestand sicherstellen kann.

IIRC sind da noch immer Altlasten aus der Windows-Geschichte. Systemressourcen, da gab es doch so 3 je 64 KByte große Systembereiche für Handles. Lange her, daß ich mal mit Win 3.11 und C programmiert habe, daher sind die Erinnerungen schwach. Eines dieser Bereiche hängt aber z.B. mit der GDI (Graphic Device Interface) zusammen, und jedes Objekt in der GDI (also Fenster, Zeichenstift, Font, …) belegt ein Handle. Und ein Fenster hat viele, viele Unterobjekte. Und diese Handles fordert man halt an und sollte tunlichst drauf achten, nach Benutzung die wieder freizugeben, sonst schwinden die Ressourcen. Und das ist halt nicht nur eine Begrenzung in der GDI, sondern auch an anderen Stellen.
Bei den eNTen-basierten Versionen ist das zwar entschärft, aber nicht völlig beseitigt.


Das im Hinterkopf wissend fiel mir beim lesen des Ursprungspostings dann auch noch ein, daß es da von Magnus H. und anderen eine Diskussion um den Windows-Port gab, im Zusammenhang mit max_connections, und IIRC gab/gibt es wohl Überlegungen, diese Größe BEI WINDOWS fest auf ca. 200 zu limitieren, weil wenn drüber PG unter Win reproduzierbar gegen die Wand knallt. Und der Fragesteller hat es auf 500 gesetzt.

Von daher: Dein Windows-Bashing ist korrekt :wink:


Andreas

Hmm… okay. Wenn ich zb. 100 Kunden hätte, die auf die Datenbank zugreifen wollen (gleichzeitig) - welche Lösung wäre denn zu empfehlen?

EDIT: Schafft das sogar Linux?

Es kommt nicht auf die Anzahl Kunden an, sondern welche Last diese auf der Datenbank verbrauchen.

Mit 100 parallelen Verbindungen hat Linux nun wirklich keine Probleme.

Wenn 100 das Limit sind, dann braucht man ja nicht 500 anzugeben. Ansonsten existiert noch pgpool.

EDIT: Schafft das sogar Linux?

Sicher.

Andreas

Okay danke. Jetzt hab ich nocht ein kleines Connection Problem. Ich erhalte immer wieder eine “to many clients” Fehlermeldung. Ist jedoch nicht der Fall ich hab max. nur 20 connections offen.

Gibt es ein Limit pro IP für Connections (kann ich das einstellen?)

Unwahrscheinlich.

Gibt es ein Limit pro IP für Connections (kann ich das einstellen?)

Nein. Bzw. maximal via PAM, PG bietet da IIRC nix.

Andreas

okay, werd dann das ganze nochmal überprüfen. Besten dank.

Super Sache, war ein Fehler von mir, klappt jetzt perfekt. Nochmals besten Dank an alle hier!!! Super Arbeit!! :smiley:

Halt, halt, nicht so voreilig.
Es wäre schön, wenn du mitteilst, woran es lag.

Damit andere, die später mal hier hereinschauen, auch eine ev. Lösung vorfinden können.