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.