spla

gis

En la primera entrada deia com van anar les proves en un servidor dedicat i disc dur convencional, amb una conclusió clara: no es pot renderitzar tessel·les amb disc dur mecànic. Doncs el primer intent d'importació del mapa del planeta sencer en un servidor VPS i disc dur SSD no ha funcionat. M'he trobat el procés parat amb un “killed”. Mirant el log syslog del sistema trobo el motiu, un “Out of memory”:

kernel: [392548.151678] Out of memory: Killed process 968 (osm2pgsql) total-vm:35032344kB, anon-rss:33595356kB, file-rss:0kB, shmem-rss:0kB, UID:109 pgtables:66244kB oomscoreadj:0

Cercant informació, en aquesta pàgina diuen clarament que la millor manera d'evitar quedar-te sense memòria és importar el mapa fent servir el paràmetre “—flat-nodes”.
Provem-ho. He esborrat la base de dades gis i la he creat de nou per a iniciar l'importació fent servir “—flat-nodes”. Veurem si tindré per fí èxit però per ara va molt més ràpid, amb un ritme deu vegades millor:

Reading in file: /home/osm/planet-latest.osm.pbf Using PBF parser. Processing: Node(4667810k 915.4k/s) Way(0k 0.00k/s) Relation(0 0.00/s)

Veurem...

Altre cop el mateix error, un “killed” degut a “Out of memory”. Ho torno a provar, ara sense el paràmetre “-C 32000”, o sigui, no li defineixo la memòria cau per a que agafi la que necessiti.

Veurem...

Èxit!

Osm2pgsql took 188133s overall Mid: removing persistent node cache at /home/osm/nodes.cache node cache: stored: 100039713(1.31%), storage efficiency: 95.40% (dense blocks: 11631, sparse nodes: 4790528), hit rate: 1.32%

Sense definir la memòria cau ha funcionat! 52 hores, 15 minuts i 32 segons és el temps total necessari, en un disc dur SSD i amb '—flat-nodes'. Següent pas.

Un cop tot muntat segueixo patint errors de renderd quan faig zoom. Torno a començar de zero però seguint les instruccions d'un altre pàgina. Veurem...

L'importació planetària a la base de dades #gis ha acabat. La vaig iniciar amb aquest paràmetres:

osm2pgsql -d gis —create —slim -G —hstore —tag-transform-script ~/src/openstreetmap-carto/openstreetmap-carto.lua —number-processes 10 -S ~/src/openstreetmap-carto/openstreetmap-carto.style ~/data/planet-latest.osm.pbf.

Ha acabat aquesta matinada amb aquests resultats, ocupant 1,7 dels 2TB de disc dur SSD disponibles:

node cache: stored: 100039713(1.31%), storage efficiency: 95.40% (dense blocks: 11631, sparse nodes: 4790528), hit rate: 1.32%. osm2pgsql took 886292s (246h 11m 32s) overall.

Després de temps pensant que havia de fer-ho, el passat 19 de març del 2019 vaig començar el procés. La màquina escollida corre Ubuntu 20.04 i les instruccions a seguir les d'aquesta pàgina. La idea és tenir una replica del servidor de OpenStreetMap, pàgina que inclou un servidor de tessel·les i un servidor Nominatim que permet fer cerques de ciutats, pobles etc per el seu nom. La part més feixuga del procés és el de l'importació de les dades del planeta sencer a la base de dades Gis. En un disc dur convencional (és l'autèntic coll d'ampolla d'aquest projecte, més avall dic perquè) ha trigat 3.611.989 segons, o sigui, 41 dies, 19 minuts i 19 segons, i la base de dades Gis ocupa (alerta) més de 1,5 Terabytes dels 2TB que té. Seguint els passos següents arribo al punt de màxima excitació, el de veure el mapa global i fer-hi zoom. Primer problema i insalvable, el dimoni renderd dona errors... D'acord, lliçó apresa. No es poden renderitzar tessel·les en temps real si la base de dades #gis del planeta sencer la tens en un disc dur convencional, és massa lent i només fa que donar errors:

renderd process Failed to send render cmd on fd x renderd send error: Inappropriate ioctl for device

Aquí he entés perquè recomanen un SSD en la pàgina d'instruccions. Cal, sí o sí, un disc dur SSD de 2TB com a mínim. El meu projecte de tenir un servidor de tessel·les de #OpenStreetMap queda en suspens degut aquest problema tècnic. Però sóc tossut, ho torno a provar des de zero, esborro la base de dades (més de 41 dies de feina esborrats en pocs segons) i començo l'importació però “només” de Europa, pensant que amb menys tessel·les sí que podré fer zoom sense errors de renderd.

osm2pgsql took 831506s (230h 58m 26s) overall

9 dies, 14 hores, 58m i 26 segons ha trigat en importar les dades del mapa d'Europa a la base de dades gis. I em dona els mateixos errors de renderd. Ja toca deixar-ho estar. No havia après la lliçó? Torno a començar de zero, aquest cop amb un disc dur SSD de 2TB! A veure quan trigarà però en un dia ja ha acabat d'importar els “nodes” i ja està important els “Way”. Seguiré en una propera entrada...