Brak kawałków mapy OSM

Interesuję się generowaniem mapy na własny użytek, na podstawie danych OpenStreetMap. Kilka lat temu stawiałem taki server od podstaw na Linuxie. Obecnie jest prościej, bo można skorzystać z gotowego obrazu dockerowego https://github.com/Overv/openstreetmap-tile-server

Zająłem się także modyfikacjami wyświetlanej mapy, zależało mi na powiększeniu czcionki wyświetlanych nazw miejscowości.

Pojawił się problem przy serwowaniu mapy - niektóre kafle mapy pozostawały szare. Po sprawdzeniu okazało się, że po uruchomieniu docker w trybie RUN leaflet na stronie prezentował niekompletną mapę, a patrząc na obciążenie procesora (normalnie 4 wątki na 100%) na serwerze nagle kończyło się generowanie kafli. Więc do sprawdzenia.

docker ps -a #lista uruchomionych kontenerów docker exec -it a1d302620d5c bash #uruchomienie basha in sudo -u renderer renderd -f -c /etc/renderd.conf #ręczne uruchomienie renderowania kafli

Proces renderowania nagle urywa się i w konsoli można znaleźć między błąd:

Postgis Plugin: ERROR: could not resize shared memory segment "/PostgreSQL.1970766362" to 50438144 bytes: No space left on device.

SHM to shared memory współdzielona pomiędzy aplikacjami, domyślnie kilka MB. O ile w dockerach postgresqla da się ją poprzez podanie dodatkowego parametru uruchomieniowego to tu to nie zadziałało. Potrzebne było wyedytowanie plików z parametrami na poziomie kontenera.

sudo docker exec -it a1d302620d5c df -h /dev/shm #sprawdzenie wielkości SHM i ile jest wolne sudo systemctl stop docker #zatrzymanie usług dockera sudo systemctl stop docker.socket

Zmiana linii ShmSize w ustawieniach kontenera

sudo nano /var/lib/docker/containers/a1d302620d5ca267f633eea8f5d99f05b5f5c132b0b6dd13fcbf51379d24be35/hostconfig.json “ShmSize”:1073741824

Po ponownym starcie usługi dockera i samego kontenera problem rozwiązany.