ich konnte recht schnell einen Server aufsetzen, klappt soweit sehr gut.
Allerdings werden asiatische Schriftzeichen nicht richtig gerendert - nur Blöcke sichtbar.
Hab dann die datei inc/fontset-settings.xml.inc nach dieser Anleitung modifiziert: http://wiki.openstreetmap.org/wiki/Mapnik
allerdings ohne Erfolg ?!
Da grad ein aktuellers Ubuntu zur Hand war (12.04 64Bit Server) habe ich das einfach mal hier versucht.
Die entsprechenden Pakete waren flux installiert, mal Bayern runtergeladen und erfolgreich eingebunden - für den “remote Zugriff” von Localhost auf die SERVER IP geändert - soweit so gut …
Ich habe dann wie in diesem Thread beschrieben mir mal alle dazu gehörigen Logfiles angeschaut - hier aber nirgendwo was auffälliges zu sehen.
Auch der Start von " sudo /usr/bin/renderd -f" gab ausser den Standard Meldungen keine Aufschlüsse.
Wie rufst du denn die lokalen Tiles auf? wenn du das über localhost auf der Linuxmaschiene machst sollte es klappen. wenn du jedoch von außerhalb auf den Server gehst musst du die Datei Slippymap.html anpassen damit der Layer gefunden werden kann.
Natürlich kann man tunen. Die Frage ist natürlich was der Flaschenhals ist. Da musst du also zunächst mal reinschauen. Wenn das Rechnen der Kacheln zu lange dauert, dann einfach die Kacheln im idle vorberechnen. etc. Ansonsten kann man auch die Datenbank tunen. Die Einstellungen dort sind laut Anleitung auch eher konservativ damit sie auf vielen Systemen laufen.
erstmal danke für eure Antworten - ich hab mir schon sowas gedacht …
Aktuell läuft mal der Datenimport von “Deutschland” hier kann man dann mal sehen, wo es wirklich “klemmt”.
Eine OT Frage: Ich bin recht “frisch” in dir OSM Thematik - daher bitte Entschuldigung, wenn ich evtl etwas dumm frage…
Die dort verlinkte virtuelle Maschine liefert Dir mit einem Mausklick einen fertigen Render-Server, einen Geocoder (Nominatim) und eine rudimentäre OpenLayers-Seite…
Sehr komfortabel das…
man kann anstelle von OpenLayers auch LeaFlet nehmen. Ist etwas schlanker und dadurch einfacher. Allerdings nicht so sehr verbreitet.
Nominatim ist ok und zu den Routern kann ich nichts genaues sagen. OSRM ist aber gut.
Vielleicht solltest du erst dein Anforderungsprofil festlegen und dann an die Umsetzung gehen.
Deine Karte wird schon jetzt mit Openlayers dargestellt. Also openlayers hast du schon an Board. Wenn du etwas suchen möchtest brauchst du dafür in erster Linie eine Datenbank und ein Programm was die Suchanfragen soweit “aufweicht” das damit korrekte Objekte gefunden werden. Im Idealfall gleichst du damit andere Schreibweisen und -fehler gleich auch noch aus.
Auch ist es hilfreich wenn du die Art des Objektes eingrenzen kannst. Sprich du suchst eben Straßen und nicht Orte oder irgendwelche Cafes. Unterumständen bist du da mit einer eigenen Suchfunktion und SQL besser dran. Aber das musst du selbst schauen. Der Vorteil wäre wenn du es aus der Osm2pgsqldatenbank auslesen könntest das du keine zweite mit ähnlichen Daten dafür vorhalten müsstest.
erstmal vielen Dank für die viele Anregungen und Hilfestellungen … - das ist nicht unbedingt “üblich” - daher nochmals DANKE !
Zum thema Tuning nochmals:
ich bin mir nicht sicher, ob es hier wirklich um “Tuning” geht…
Denn der Server ist eigentlich permanent im Leerlauf - mache Kacheln werden angezeigt - andere garnet - dann dauert es wieder ewig bis überhaupt was kommt …
Als ich gestern nur “Oberbayern” in der DB hatte ging das wenigstens noch so halb - jetzt mit Deutschland überhaupt nicht mehr vernünftig …
Der Import hat keine Fehlermeldungen erzeugt und lief über Nach sauber durch.
Der Daemon startet soweit auch - der Server ist eigentlich ständig im leerlauf…
Ich hab auch schon mehrfach sämtliche LOG-Files kontrolliert ob hier etwas kommt, apache und den render Daemon neu / als Front gestartet … ich komme nicht drauf…
@VIW: Ja - ich sehe das prinzipiell auch so - allerdings möchte ich erst mal ein “Gefühl” für OSM bekommen - dazu gehört nach meiner Meinung aber erstmal, dass die einzelnen Komponenten funktionieren und dass ich verstehe, wie alles zusammenspielt - wir haben bisher immer mit G-Maps gearbeitet - und hier ist halt vieles anders - vor allem, wenn man mit “fertigen Lösungen” arbeitet - das ist ja hier nicht der Fall.
CU
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?
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.
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 ?
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
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.
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) ?
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.