Tileserver: Bereits prerenderte Tiles werden erneut gerendert

Hi ich hoffe dass ich hier richtig bin mit meiner Frage.

Ich habe mir einen Tileserver mit Hilfe des switch2osm (https://switch2osm.org/serving-tiles/building-a-tile-server-from-packages/) Guides zusammengebaut.

Auf diesem habe ich dann auch Tiles aus der Postgres World Database bis zur 14ten Zoom Stufe prerendert, da das rendern der ersten Zoomstufen extrem große query in Postgres auslöst und so ziemlich Leseaufwendig ist (SSD war beim rendern den ersten Zoomstufen mit 350 MB/s+ am Lesen und mit 99% I/O Auslastung ständig am Limit).

Nun habe ich allerdings das Problem das wen ich z.B. in slippymaps mal schnell über die anfänglichen Zoomstufen (3-10) „rutsche“, dass die Tiles irgendwie eine neue render Abfrage auslösen und Postgres wieder anspringt somit meine SSD in Geiselnahme nimmt mit der 99% I/O Auslastung ( Was gerne mal 30 min + dauern kann). Obwohl die Tiles wie bereits gesagt prerendert sind und auch im Browser längst angezeigt werden.

Nach Erkundigungen im osm IRC ist das ein häufiger Fehler wen man den timestamp für mod_tile vergessen hat, dies habe ich allerdings strikt nach dem switch2osm guide ebenfalls gemacht (touch /var/lib/mod_tile/planet-import-complete).

Ansonsten funktioniert der Tileserver mit der World Database im Wesentlichen, daher stehe ich mittlerweile recht Ratlos da, was dieses unnötiges rendern von bereits erstellten Tiles auslöst. Ich hoffe hier kann mir jemand neuen Input mit dessen Hilfe man dieses Problem irgendwie angehen könnte.

Hier noch ein paar Informationen über meine Hardware/Software:

CPU: Intel Core i7-4770
RAM: 16 GB
Drive: 1 TB SSD für die Database/root
OS: Ubuntu 14.04 trusty
Database: Es Handelt sich dabei um die World Database (ca. 600GB) die Täglich auf dem neusten Stand gebracht wird (usr/bin/openstreetmap-tiles-update-expire).
Tileserver Software: Postgres, mapnik, mod_tile, renderd haben alle die Version des switch2osm Packages (libapache2-mod-tile).

Vermutlich sucht mod_tile die Datei an nem anderen Ort.
Wenn du alte Tiles manuell neu renderst, kannst du mod_tile auch einfach komplett abgewoehnen, schon existierende Tiles neu zu rendern. Pack das in deine Apache config:


 # Bulk mode: make all requests to renderd with bulk render priority, never mark tiles dirty
 ModTileBulkMode On

Mach ich uebrigens auch so.

Ist es denkbar, dass Du das erst nach dem initialen Vorberechnen der Tiles gemacht hast und nicht davor? Normalerweise wird mod_tile die Neuberechnung anfordern, wenn das Tile älter als der Timestamp dieser Datei ist. – Manchmal findest Du in der error.log Deines Apache nützliche Hinweise dazu, was mod_tile glaubt, tun zu müssen, und warum.

Bye
Frederik

Habe tatsächlich ganz am Anfang, als die Database frisch importiert wurde, vor den prerendern die “planet-import-complete” File erstellt, allerdings natürlich nach dem prerendern der Tiles sie erneut “getouched” , half leider nicht bei dem Problem.

Habe nun diesen Ansatz für den Tileserver versucht, scheint so weit zu funktionieren. Jetzt nur noch rausfinden ob/wie es funktioniert die updatet Tiles manuell zum rerendern zu schicken.

Danke euch beiden für die Hilfe bei diesen Problem.