Hallo liebe Community!
Ich lese seit Jahren hier interessiert mit, erfahre dabei viel, und war aber bisher aufgrund meines bescheidenen Wissens immer recht froh, dass meine Applikation so tadellos lief. Bis gestern.
Ich habe eine Webapplikation, die mithilfe einer PostgreSQL Datenbank (9.4.4.3 x64) seit fast 8 Jahren läuft. In dieser Config seit 10.08.2015 durchgehend, die Webapplikation wird täglich hundertfach aufgerufen - bisher alles überhaupt kein Problem.
Aber seit gestern stürzt mir der postgres-Dienst (läuft unter Windows Server 2008 R2 x64 Datacenter) laufend ab. Wenn ich ihn über die Windows > Dienste neu starten möchte, erhalte ich die Fehlermeldung "Dienste "postgresql-x64-9.4 - PostgreSQL Server 9.4" wurde auf "Lokaler Computer" gestartet und dann angehalten. Einige Dienste werden automatisch angehalten, wenn sie nicht von anderen Diensten oder Programmen verwendet werden".
In den Log-Files von PostgreSQL finde ich diesbezüglich folgenden Eintrag:
TopMemoryContext: 80832 total in 11 blocks; 1696 free (7 chunks); 79136 used
smgr relation table: 24576 total in 2 blocks; 13920 free (4 chunks); 10656 used
ident parser context: 0 total in 0 blocks; 0 free (0 chunks); 0 used
hba parser context: 3072 total in 2 blocks; 1040 free (1 chunks); 2032 used
TopTransactionContext: 8192 total in 1 blocks; 6160 free (5 chunks); 2032 used
TransactionAbortContext: 32768 total in 1 blocks; 32736 free (0 chunks); 32 used
Portal hash: 8192 total in 1 blocks; 1680 free (0 chunks); 6512 used
PortalMemory: 0 total in 0 blocks; 0 free (0 chunks); 0 used
Relcache by OID: 8192 total in 1 blocks; 640 free (0 chunks); 7552 used
CacheMemoryContext: 253952 total in 5 blocks; 128 free (2 chunks); 253824 used
pg_ts_template_tmplname_index: 1024 total in 1 blocks; 64 free (0 chunks); 960 used
pg_ts_config_map_index: 3072 total in 2 blocks; 1784 free (2 chunks); 1288 used
pg_opclass_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_foreign_data_wrapper_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_event_trigger_evtname_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_ts_dict_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_event_trigger_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_conversion_default_index: 3072 total in 2 blocks; 1784 free (2 chunks); 1288 used
pg_operator_oprname_l_r_n_index: 3072 total in 2 blocks; 1784 free (2 chunks); 1288 used
pg_enum_typid_label_index: 1024 total in 1 blocks; 64 free (0 chunks); 960 used
pg_ts_config_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_user_mapping_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_opfamily_am_name_nsp_index: 3072 total in 2 blocks; 1784 free (2 chunks); 1288 used
pg_foreign_table_relid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_type_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_aggregate_fnoid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_constraint_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_rewrite_rel_rulename_index: 1024 total in 1 blocks; 64 free (0 chunks); 960 used
pg_ts_parser_prsname_index: 1024 total in 1 blocks; 64 free (0 chunks); 960 used
pg_ts_config_cfgname_index: 1024 total in 1 blocks; 64 free (0 chunks); 960 used
pg_ts_parser_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_operator_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_namespace_nspname_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_ts_template_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_amop_opr_fam_index: 3072 total in 2 blocks; 1784 free (2 chunks); 1288 used
pg_default_acl_role_nsp_obj_index: 3072 total in 2 blocks; 1784 free (2 chunks); 1288 used
pg_collation_name_enc_nsp_index: 3072 total in 2 blocks; 1784 free (2 chunks); 1288 used
pg_range_rngtypid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_ts_dict_dictname_index: 1024 total in 1 blocks; 64 free (0 chunks); 960 used
pg_type_typname_nsp_index: 1024 total in 1 blocks; 64 free (0 chunks); 960 used
pg_opfamily_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_class_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_proc_proname_args_nsp_index: 3072 total in 2 blocks; 1784 free (2 chunks); 1288 used
pg_attribute_relid_attnum_index: 1024 total in 1 blocks; 64 free (0 chunks); 960 used
pg_proc_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_language_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_namespace_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_amproc_fam_proc_index: 3072 total in 2 blocks; 1784 free (2 chunks); 1288 used
pg_foreign_server_name_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_attribute_relid_attnam_index: 1024 total in 1 blocks; 64 free (0 chunks); 960 used
pg_conversion_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_user_mapping_user_server_index: 1024 total in 1 blocks; 64 free (0 chunks); 960 used
pg_conversion_name_nsp_index: 1024 total in 1 blocks; 64 free (0 chunks); 960 used
pg_authid_oid_index: 1024 total in 1 blocks; 152 free (0 chunks); 872 used
pg_auth_members_member_role_index: 1024 total in 1 blocks; 64 free (0 chunks); 960 used
pg_tablespace_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_database_datname_index: 1024 total in 1 blocks; 152 free (0 chunks); 872 used
pg_auth_members_role_member_index: 1024 total in 1 blocks; 64 free (0 chunks); 960 used
pg_database_oid_index: 1024 total in 1 blocks; 200 free (0 chunks); 824 used
pg_authid_rolname_index: 1024 total in 1 blocks; 152 free (0 chunks); 872 used
MdSmgr: 0 total in 0 blocks; 0 free (0 chunks); 0 used
LOCALLOCK hash: 8192 total in 1 blocks; 1680 free (0 chunks); 6512 used
Timezones: 79376 total in 2 blocks; 3744 free (0 chunks); 75632 used
ErrorContext: 8192 total in 1 blocks; 8160 free (0 chunks); 32 used
2017-11-30 15:21:17 CET FATAL: out of memory
2017-11-30 15:21:17 CET DETAIL: Failed on request of size 186.
2017-11-30 15:23:51 CET LOG: could not reserve shared memory region (addr=0000000001540000) for child 0000000000000868: error code 1455
2017-11-30 15:23:51 CET LOG: konnte neuen Prozess für Verbindung nicht starten (fork-Fehler): No error
2017-11-30 15:23:51 CET LOG: CreateProcess call failed: No error (error code 8)
2017-11-30 15:23:51 CET LOG: konnte neuen Prozess für Verbindung nicht starten (fork-Fehler): No error
2017-11-30 15:23:51 CET LOG: CreateProcess call failed: No error (error code 8)
2017-11-30 15:23:51 CET LOG: konnte neuen Prozess für Verbindung nicht starten (fork-Fehler): No error
2017-11-30 15:24:13 CET LOG: Serverprozess (PID 83648) wurde durch Ausnahme 0xC000012D beendet
2017-11-30 15:24:13 CET TIPP: Sehen Sie die Beschreibung des Hexadezimalwerts in der C-Include-Datei „ntstatus.h“ nach.
2017-11-30 15:24:13 CET LOG: aktive Serverprozesse werden abgebrochen
2017-11-30 15:24:13 CET WARNUNG: breche Verbindung ab wegen Absturz eines anderen Serverprozesses
2017-11-30 15:24:13 CET DETAIL: Der Postmaster hat diesen Serverprozess angewiesen, die aktuelle Transaktion zurückzurollen und die Sitzung zu beenden, weil ein anderer Serverprozess abnormal beendet wurde und möglicherweise das Shared Memory verfälscht hat.
2017-11-30 15:24:13 CET TIPP: In einem Moment sollten Sie wieder mit der Datenbank verbinden und Ihren Befehl wiederholen können.
2017-11-30 15:24:13 CET LOG: alle Serverprozesse beendet; initialisiere neu
2017-11-30 15:24:13 CET FATAL: konnte Shared-Memory-Segment nicht erzeugen: Fehlercode 1455
2017-11-30 15:24:13 CET DETAIL: Fehlgeschlagener Systemaufruf war CreateFileMapping(Größe=152993792, Name=Global/PostgreSQL:C:/WebServer/PostgreSQL944Data).
Jetzt ist "out of memory" und "konnte Shared-Memory-Segment nicht erzeugen" ja eigentlich ziemlich eindeutig - also habe ich die Werte für shared_buffers, temp_buffers, work_mem und maintenance_work_mem einmal erhöht - keine Änderung.
In der Windows-Ereignisanzeige tritt unter PostgreSQL bei diesem fehlgeschlagenen Start ebenfalls ein Fehler-Eintrag auf, und zwar genau die letzten beiden Zeilen vom obigen Log. Dann noch ein zweiter mit "Zeitüberschreitung beim Warten auf Start des Server".
Jetzt habe ich natürlich ein Backup der Datenbank von 15:11 Uhr, also kurz vor dem letzten Crash lt. Log. Jetzt hätte ich als nächsten Schritt PostgreSQL deinstalliert, neu installiert und das Backup neu eingespielt. Nur: Windows lässt mich PostgreSQL nicht deinstallieren. Entweder passiert überhaupt nichts, oder es erscheint ein Windows-Fehler-Popup, aber ohne Text und mit nicht-beschriftetem Button. Ergo: Da hats gewaltig was.
Hat irgendwer noch irgendwelche Tipps, die ich ausprobieren könnte, bevor ich die ganze VM zurücksetzen lasse und die gesamte Webapplikation neu installieren muss?
Danke, Stefan