[Talk-de] Nominatim: Postgresql Kernel Panic Out of Memory durch Import

jotpe jotpe.osm at gmail.com
Di Jan 29 09:02:58 UTC 2013


Hallo zusammen.

Ich versuche germany.tar.bz2 (2GB) in OSM zu importieren. Jedoch wurde bei
den letzen zwei Importen ein Kernel Panic "Out of Memory" ausgelöst.

Die Maschine hat 5 GB RAM, Debian Squeeze mit Postgressql 9.2.2. Mit den
Standardeinstellungen des Pgsql konnte der Regierungsbezirk Köln (100MB)
erfolgreich indiziert werden.

Dann habe ich nach dem Vorbild "Tuning PGSQL" in
http://wiki.openstreetmap.org/wiki/Nominatim/Installation die Memory-Werte
in postgresql.conf erhöht, damit ich nicht solange warten muss. Dort habe
ich die Werte nach Gefühl von den beschriebenen 32GB auf meine 5GB
angepasst.

Als der erste Versuch germany bereits Stunden lief, wollte ich "nebenbei"
das OSRM kompilieren und währrenddesen war der Server plötzlich nicht mehr
erreichbar. Im Serverraum sah ich dann die Meldung Kernel Panic: Out of
Memory, konnte keine Prozesse mehr töten...

Vor dem zweiten Versuch stellt ich fest, dass durch einen
Rechtschreibfehler gar kein swap (5 GB) aktiviert war => mit swapon
nachgeholt. Ich verringerte die Speicherwerte (aber wegen jetzt verfügbaren
Swap nur wenig) und ließ von weiteren parallelem Kompilieren ab.

shared_buffers = 950 MB ( 1GB mit echo "1073741824" >
/proc/sys/kernel/shmmax )
maintance_work_mem = 3500 MB (war das zu hoch?, in der pgsql doku steht
256MB)
work_mem = ??  (konnte noch nicht nachsehen, kein Zugang Serverraum)
effective_cache_size = ?? (dito)
checkpoint_segments = 100
checkpoint_timeout = 10min
checkpoint_completion_target = 0.9

Wiederum trat vermutlich der gleiche Kernel Panic (mom. kein Zugang
Serverraum) innerhalb des setup.php-Abschnittes "Loading word list", wo
49000 Datensätze in die Tabelle "word_frequencies" importiert werden.


Fragen:

   - Wenn ich die Standardeinstellungen der postgresql.conf
   wiederherstelle, kann ich dann einen Kernel Panic verhindern auf Kosten der
   Laufzeit, oder sind die voreingestellten Werte zu wenig für die großen
   Datenmengen, was wiederum zu einem Kernel Panic führt?
   - Kann man vorher irgendwie prüfen, ob das mit dem Ram passt oder stellt
   sich das immer erst nach 10h Laufzeit heraus?
   - Sagen wir pgsql bekommt maximal 3.5GB RAM dann bleiben noch 1.5GB
   übrig bevor der SWAP benutzt wird. D.h. ich muss darauf achten, dass noch
   genung RAM für das setup.php-Skript und osm2pgsql übrig bleiben. Wieviel %
   sind da sinnvoll?


Vielen Dank für eure Hilfe.
Beste Grüße jotpe



Mehr Informationen über die Mailingliste Talk-de