Ubuntupaket für lokalen Tileserver

Das sieht doch sehr nach Datenbank aus. Hast du hier mal die Standardparameter geändert? Ich bin leider der falsche Ansprechpartner dafür, aber laufen denn SQL Anfragen zügig durch, damit der Server futter zum rendern/arbeiten bekommt? Eventuell gibt es die Möglichkeit auch noch die Datenbank irgendwie zu optimieren. Nach dem großen Import ist sicher erstmal einiges durcheinander.
komerziellen Support bietet auf jeden Fall die Geofabrik an und Frederick hat das Programm zum Import maßgeblich mit entwickelt.
Sollte die Datenbank der Flaschenhals sein und die Parameteränderung nichts helfen, dann wäre darüber nachzudenken die Indezes in Den Hauptspeicher oder auf SSDs auzulagern. Letzteres geht auf jeden Fall, ist aber sicher keine Standardlösung.

Wie beiOSM alles zusammenspielt ist gut gesagt. Es git eigentlich mehr oder weniger Einzellösungen, die man nach seinen Bedürfnissen kombinieren muss. Du hast mit dem Tileserver ein Komplettpaket für einen Tileserver installiert. In wirklichkeit stecken darin aber eine osm2pgsql Datenbank im Gegensatz zu einer Snapshot oder anders auf bereiteten Datenbank liefert die sehr gute Ergebnisse zum Rendern. Das wiederum macht Mapnik für dich. In dem Paket sicher noch nicht in der aktuellsten Version. Diese Programm käme sicher mit einer Vielzahl von Eingangsdaten klar. shp osm und Co. Aber die Datenbank lässt sich am besten updaten und liefert immer nur kleine Brocken. das kann den Prozess beschleunigen.
Damit Mapnik weiß was er tun soll, gibt es eine Erweiterung des Apache Servers namens Renderd. Dafür gibt es aber auch andere Möglichkeiten.
Wenn du ein Routing versuchen möchtest kann man neben osrm auch ein Datenbank bassiertes Routing mit pgroute machen. Das erfordert wieder ein spezielles Datenbankformat. Im Extremfall hast du also 3 Datenbanken mit den Deutschland daten auf deinem Server laufen. Ob dafür 8GB Aberbeisstpeicher noch aussreichend sind?

Hallo

ja - das habe ich schon soweit erfasst - im Prinzip sind das lauter einzelne Lösungen die dann selbst zu kombinieren sind - mit zusammenspielen meinte ich “wie diese zu kombinieren sind” um ein Ergebnis zu erzielen.
Der Server ist momentan auch nur ein “Virtueller” auf einem größeren Server - das ist aktuell aber alles nur TEST-Stadium…

So wie ich das aktuell sehe funktioniert das überhaupt nicht, da vieles überhaupt nicht angezeigt wird - und der Server im Leerlauf dahin dümpelt … Ich denke also dass das etwas überhaupt nicht funktioniert …
Ich finde momentan nur überhaupt keinen Ansatz wo ich noch schauen soll…

Evtl kann mir hier jemand weiter helfen ! - das währe toll …
CU
GTR

PS: zum Link mit dem VM-Image - das ist Virtual-BOX - ich habe hier nur VMware - eine Konvertierung ist zwar offenbar möglich - aber auch nur erheblichem Aufwand.

Hallo zusammen

erstmal - Grundproblem gelöst - der DB-Server wollte nicht starten … - sorry - ist mir erst jetzt aufgefallen…
Nun läuft´s grundsätzlich mal mit ganz DE - allerdings noch immer SEHR Träge.

Kommen wir zurück zum Thema Tuning:

Ich habe hier Themen gelesen wie:

  • Titles vorher Rendern
  • Im Hintergrund rendern lassen, wenn der Server nix zu tun hat
    usw…

In welcher Config steuere ich das denn ?

NACHTRAG: Komischerweise arbeitet der “Renderer” in den hohen Zoom-Stufen" - in der Gesamt-Ansicht von Deutschland fehlt aber die rechte Hälfte und auch in der 2. und 3. Zoom-Stufe arbeitet renderd nicht - komischerweise aber wenn man weiter rein zoomt - dann arbeitet das System … - verstehe ich nicht !
Macht es evtl sinn, die Kacheln komplett vorher oder im Hintergrund rendern zu lassen ?

CU
GTR

Ich bin kein Mapnik-Fachmann, aber so weit ich es verstanden habe, hat Mapnik verschiedene Strategien für verschiedene Zoomstufen.

In den hohen Zoomstufen, wo zum Zeichnen wenig Daten nötig sind, aber es eine sehr grosse Menge Tiles gibt, werden die Tiles bei Bedarf gezeichnet. Updates markieren existierende Tiles als “dirty” und werden bei einem erneuten Abruf neu gezeichnet. Würdest du alle Tiles für DE in den höchsten Zoomstufen rendern, bräuchtest du einigen Plattenplatz.

In den niedrigen Zoomstufen müssen hingegen wenige Tiles mit sehr grosse Datenmengen geladen werden. Ferner hast du permanent Änderungen, so dass diese Tiles meistens “dirty” wären. Daher werden die niedrigen Zoomstufen periodisch komplett neu gezeichnet und nicht auf Abruf. Der Algorithmus geht davon aus, dass du bereits Daten von einem früheren Lauf hast. Du musst jetzt einfach etwas Geduld haben. Scheinbar ist halb Deutschlad in der niedrigsten Stufe schon fertig :slight_smile:

Bei der Konfiguration wann welche Strategie etc. kann ich dir aber überhaupt nicht helfen.

Bevor hier Mißverständinsse auftreten. Mapnik besitzt keine Strategien. Mapnik macht nur was ihm gesagt wird! Im Prinzip geht das wie folgt: Mittels der htmldatei wird Openlayers mitgeteilt welche Layer in welchen Zoomstufen verfügbar sein sollen. Es wäre also der erste Ansatz dort zu schauen ob dein Layer auch die ersten Zoomstufen umfasst oder Openlayers den Server gar nicht fragt weil ihm gesagt wurde da gibts nichts.
Als zweites wird dann der Server gefragt hast du das Teil? Dort wird dann quasie überprüft ist das Ding da? Wenn ja ist es aktuell? dann wird es ausgeliefert. Wenn nein dann wird ein Auftrag für Mapnik fertig gemacht. Das alles steuerst du über renderd. Allerdings soll das etwas älter sein.
Wenn du quasi auf dem gleichen Server vorher nur Bayern hattest und jetzt Deutschland importiert hast, wäre es möglich das die Tiles ohne Inhalt schon vorher erstellt wurden. Damit sind sie vorhanden und bei einem neuen Import nicht als veraltet markiert worden. Sprich nach dem neue Daten angekommen sind mussen die alten Tiles als Alt gekennzeichnet werden.
Man kann alles vorberechnen. Das geht im Prinzip am schnellsten, wenn man ans ausliefern denkt. Es ist aber für ein sich öfter ändernden Datenbestand unökonomisch, weil bis das Tile wirklich angeschaut wird hat es sich vielleicht schon dreimal geändert. Du hättest also umsonst gerechnet. Das ist eben die Frage der Strategie.

Hallo

so - jetzt hab ich das verflixte Problem endlich gelöst - das war ne Mischung aus “altem Cache” und falsch konfigurierter Datenbank.
Zudem habe ich die timeout´s in der vhosts für das Laden und rendern der Kacheln erhöht - nun läuft das.

Wenn ich das jetzt alles richtig verstanden habe funktioniert die ganze geschichte so:

Der Nutzer ruft einen Ausschnitt auf - mod_title schaut nach ob diese im Cache liegt - liegt diese im Cache, wird dieser angezeigt - wenn nicht, werden diese Ausschnitte gerendert, angezeigt und im Cache abgelegt.

Soweit richtig ?

Allerdings dauert das “LIVE RENDERN” doch recht lange, was die Frage aufwirft, ob es hier einen “besseren” weg gibt ?

Kann man:

  • Bestimmte ZoomStufen FIX im Cache ablegen lassen (wenn der Server nix zu tun hat) ?
  • Evtl alles Rendern ? (Platzproblem ?)
  • andere Ansätze ?

CU
GTR

Soweit richtig verstanden. Und auch die beiden Ansätze sind die einzig möglichen bzw. eine Mischung daraus. Du musst schauen wieviel Platz, wie oft aufgerufen, wie oft aktualisiert? Daraus musst du dann die Strategie ableiten. Wenn du nie aktualisierst oder nur selten und viel Platz hast, gehts mit alles rendern sehr schnell. Wenn du ständig aktualisierst (minituley diffs) dann veralten Tiles sehr schnell. Das sollte man dann nach Zoomstufe angepasst so einstellen.
OSM verwirft auch Gewisse Bereich sofort nach der Erstellung wieder, wenn sie ausschließlich im Meer liegen sowas passiert in Deutschland aber eher nicht so oft.
Ein weiteres Kriterium ist auch das du in einer Umgebung in der jemand gerade Tiles holt schnell weiter zu berechnen damit er später beim Scrollen gar nicht merkt das die noch nicht da waren.

Hallo

kann ich irgendwie “alles” in den Cache rendern lassen ?
Wenn ja - wie ?

CU
GTR

Frag dich mehr: WOHIN?
Soviel Terabytes hast du wohl nicht an deinem Server vorrätig. Selbst auf “unserem” OSM-Tileserver reicht der Platz wohl nicht.
Hier mal die Konfiguration: http://wiki.openstreetmap.org/wiki/Servers/yevaud (*)
Ausserdem mach es wirklich keinen Sinn, da sich jederzeit an jedem Ort was ändert.

Gruss
walter

*) Kleines Schmankerl: gesammte DB auf SSD

Deutschland hat in zoom=6 ~12 Kacheln. Pro Zoomstufe vervierfacht sich die Menge. Das macht dann rund 250.000.000 Tiles bis zoom=18.

Eine Kachel in z00m=6 hat rund 20kb, eine in zoom=18 rund 2kb, macht also im Schnitt 11kb je Tile. Sind dann so insgesammt 2,5 tb an Kacheln. Wahrscheinlich etwas weniger, da es ja noch Nord- und Ostsee gibt und Deutschland nicht rechteckig ist.

Hallo

ok - das erklärt das ganze natürlich …

Dann kommt man quasi um die “live-DB” Lösung nicht rum und letzenendes kann man - abgesehen von einigem “Finetuning” in diversen Config Dateien dann nur auf “stärkere” Hardware und ggfs auf SSD setzen.

CU

Naja wie bereits gesagt wurde: Die Anzahl der Tiles wächst um den Faktor 4 mit der Zoomstufe. Wenn du jetzt bis zoom=12 vorrenderst sind das nur rund 70000 Tiles. Bei 20kb je Tile bist du dann bei ~ 1,5 gb. Den Rest lässt du dann nur auf anfrage rendern. Der erste muss dann zwar etwas warten, aber dann liegt ja auch das erstmal im cache, bis es veraltet ist.

Hängt natürlich auch von der Anzahl der Nutzer ab. Wenn nur 5 Leute den Service benutzen und jeder jedesmal warten muss, dann ist das eher blöd. Wenn das viele Nutzen, dann sieht das schon wieder ganz anders aus.

Die Zeit die es benoetigt tiles zu rendern ist stark von der Zoom stufe abhaengig. Waerend tiles in Zoomstufe 5 - 8 teilweise etliche Minuten benoetigen, sollten die meisten Tiles in Z18 in < 3 Sekunden gerendert werden.

Das live rendering von Z18 tiles funktioniert also meist sehr gut. Fuer low zoom tiles muss man allerdings die tiles vorberechnet haben, sonst wartet man entweder Minuten oder bekommt Fehler.

Das vorberechnen funktioniert mit einem Hilfsprogram namens render_list. Dort kann man einstellen welche zoom stufen man berechnen will. Das program schickt dann entsprechende render Anfragen an renderd, die mit niedriger Prioritaet gerendert werden, also wenn der Server sonst idle waere.

Je nach Verwendungszweck wuerde ich wahrscheinlich empfehlen bis ca. z12 vor zu berechnen und ab z13 auf live rendering setzen.

Hallo

danke für die Infos - das hört sich doch vernünftig an.

an render_list hätte ich daher schon massives interesse, um zumindest die Zoom-Stufen bis 12 oder so vorrendern zu lassen.

Leider finde ich im Netz wenig über /usr/bin/render_list - nur einige “Hilfe-Gesuche”

Wie würde die eine Config und der korrekte Aufruf hier genau ausschauen ?

CU
GTR

“./render_list --all --min-zoom=0 --max-zoom=12 --num-threads=2 --socket=Path_to_your_renderd_socket” sollte wahrscheinlich funktionieren.

Hallo

Prima - das funktioniert !

Noch was OT:

Ich rufe ja die slippymap.html auf und kann oben rechts zwischen mapnik und localtiles umschalten.
Hierbei gehe ich momentan davon aus, dass dass localtiles meine lokal generierten Karten darstellen und mapnik die live Daten von einem OSM Server nimmt ?!?

Hierbei ist mir aufgefallen, dass bei maximaler Zoom Stufe die mapnik Daten teilweise wesentlich detaillierter sind als die Daten die ich hier lokal habe.

Woran liegt das ?

Ich habe die DeutschlandDatei von http://www.geofabrik.de/ genommen - war das falsch ?

Das sind sicher keine Daten, die in den letzen Tagen geändert wurden …

CU
GTR

hi,
die Daten sind ok, allerdings sind die immer von der Nacht vor dem Download. Also, wenn du die jetzt runterladen würdest, wären die von heute Mitternacht. Die Live-Daten, die Mapnik verwendet, “leben” natürlich.

Aber: Bei dem einzigen von dir je genannten Url http://78.47.170.221/osm/slippymap.html kommt derzeit nur Österreich - allerdings auch mit minimalen Abweichungen.
Wir brauchen den aktuellen Url und das Datum der Rohdaten.

Meine Vermutung wäre, dass du eventuell ein anderes Style-File für das Rendern benutzt als osm.org-Mapnik. Das “lebt” nämlich auch.

Gruss
Walter

Hallo

ja - das ist korrekt - ich habe gestern noch ein wenig experimentiert.
Ich habe es richtig verstanden, dass man immer nur EINEN DATENSATZ in die DB spielen kann. - Wenn ich als Österreich einspiele und vorher Deutschland drin hatte, ist Deutschland weg und nur noch Österreich aktiv.

Ich muss also das “am besten passende” von Geofabrik laden ?
Eigentlich wollte ich nur Deutschland + 3 umliegende Länder - wenn es diese Datei aber so nicht gibt, muss ich Europa installieren - korrekt ?

CU GTR

Davon gehe ich auch aus. das Paket ist ja nun nicht mehr ganz tau frisch zusammengeschürrt. Und da könntest du auch deinen eigenen oder einen aktualisierten Mapnikstyle nehmen. Gegebenfalls musst du auch den osm2pgsqlstyle mit ändern, damit die Daten auch wirklich in der Datenbank landen.

Hallo zusammen,

ich benutze libapache2-mode-tile seit über 2 Jahren ohne Probleme in einem Ubuntu 12.04 32-bit. Jetzt habe ich ein neues Ubuntu 14.04 in 64-bit installiert. Bei dem sudo apt-get install libapache2-mod-tile gab es einen System hangup. Der hatte mit dem install nichts zu tun. Nach dem restart wurde ich von synaptic zu einem sudo dpkg --configure -a aufgefordert.

Nun ging das Problem los: Es kam der Fehler “AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message”.

Ich habe alles was mir unter die Finger kam und irgendwie mit der Installation zusammen hing (Apache2* postgresql* libapache2-mode-tile) markiert für complet removal und entfernt. Danach habe ich libapache2-mode-tile erneut installiert. Leider kommt der Fehler immer wieder.

Wie mache ich eine saubere Uninstalltion damit ich wieder sauber neu installieren kann???

Danke im Voraus Rainer