Overpass API wächst um eine Größenordnung

In der ersten Juni-Hälfte hat die Overpass API nicht so zuverlässig wie gewohnt gearbeitet. Mittlerweile konnte die Overpass API wieder zum Normalbetrieb zurückkehren. Wenn ich selbst anderswo solche Ausfälle erlebe, möchte ich eine Erklärung haben. Daher im Folgenden ein paar Details zu der Ausfallzeit:

Was ist passiert?

Am letzten Dienstag, 6. Juni, ist die Anzahl der Anfragen von ca. 50.000 – 80.000 pro Tag auf fast 1.000.000 pro Tag angestiegen. Erfreulicherweise hat sich auch die Anzahl unterscheidbarer IP-Adressen von 300 pro Tag auf etwa 6000 erhöht. Allerdings ist der Server mit dieser drastisch angestiegenen Last überfordert – ein Slashdot-Effekt. Fast alle Abfragen wurden mit einer HTML-Seite, dass der Server überlastet ist, beantwortet.

Die neu auflaufenden Abfragen sind alle von der Form xapi?*[amenity=*][bbox=...]. Erfreulicherweise wird eine Kennung des User Agents mitgeschickt, so dass ich die Abfragen der iOS-App „Geomon“ zuordnen kann. Es sieht so aus, als wenn die Timeout-Meldungen keinerlei Effekt auf das Verhalten der App haben.

Unabhängig davon fällt am Freitag aus ungeklärten Gründen die Rambler-Instanz aus: die erste Unregelmäßigkeit ist, dass ein Durchlauf des Compilerwerkzeugs make mit einer nicht reproduzierbaren Fehlermeldung abstürzt. Danach gibt es Konsistenzehler bei der Area-Erzeugung, ebenfalls nicht reproduzierbar. Einige Stunden später gelingt es mir nicht mehr, mich per ssh einzuloggen, und der Webserver zeigt nicht einmal mehr die statische Website. Im Gesamtbild spricht fast alles für einen Hardware-Schaden. Im Nachhinein stellt es sich als ein Problem mit dem Rambler-internen NFS heraus; mein Home-Verzeichnis liegt nicht physisch auf dem gleichen Server wie der Overpass-Server, so dass dieser mein Home-Verzeichnis nicht mehr lesen konnte. Ich frage einen Reboot an, aber der Server bleibt unerreichbar.

Um die Performance für die meisten Anwendungen zu erhalten, auch wenn die Benutzerzahl von Geomon die aller anderen Anwendungen dominiert, habe ich daher zu diesem Zeitpunkt spezifisch die XAPI-Anfragen auf maximal 3 parallele Anfragen gedrosselt, so dass Overpass-QL-basierte Anwendungen weiterhin etwa die gewohnte Leistung erreichen.

Parallel dazu beginne ich für overpass-api.de einen Umzug vom vier Jahre alten Hetzner DS5600 (4 GB RAM, AMD K5600+) auf einen aktuellen Hetzner EX6S (32 GB RAM, Xeon E3-1245). Auf dem neuen Server habe ich diese Grenze auf 10 parallele Anfragen anheben können, so dass jetzt auch 90%-95% der Anfragen im XAPI-Format wieder ausgeführt werden.

Am 14. Juni ist dann das NFS-Problem auf dem Rambler-Server wieder behoben – der zuständige Administrator war nicht im Büro, und die Nachrichten-Weiterleitung hat nicht wie erwartet funktioniert. Jetzt funktioniert auf overpass.osm.rambler.ru wieder alles normal.

Ist overpass-api.de generell überlastet?

Generell muss sich niemand, der weniger als 10.000 Anfragen pro Tag erzeugt, darüber Gedanken machen. Die Leistungsgrenze des alten Servers liegt bei etwa 100.000 Anfragen pro Tag, die des neuen etwa bei 1.000.000 Anfragen pro Tag. Bei Lasttests haben sich auf dem neuen Server bis zu 10.000 Abfragen pro Minute als handhabbar herausgestellt, je nach Größe der Anfragen.

Knapp sind auf dem Server vor allem Festplattenzugriffe, im Englischen, der Server ist „I/O bound“. Die eigentlich gute Performance von Overpass API beruht darauf, Geodaten in Blöcken von 512KB statt einzeln zu lesen. Eine typische Anfrage wird das Lesen von 3-4 Blöcken auslösen, und der Server kann etwa 10 pro Sekunde lesen. Die beobachtete Geschwindigkeit liegt aber deutlich darüber, was dafür spricht, dass sehr viele Blöcke erfreulicherweise statt von der Festplatte aus dem RAM-Cache gelesen werden. Sehen kann man dies am Munin-Diagramm: es werden sogar mehr Daten geschrieben als gelesen.

Nicht knapp ist dagegen die CPU-Zeit. Das Munin-Diagramm zeigt uns, dass die Prozessoren ganz erheblich Zeit für die Area-Aktualisierung verwenden können und zu noch mehr Anteilen unbeschäftigt sind, was der gezeigte, orange bzw. gelbe Nice-Anteil ist.

Die eigentliche Schwierigkeit liegt jedoch darin, dass Anfragen schubweise kommen, zum Teil bis zu 5000 pro Minute. Für statische Webseiten wäre dies nicht viel, für Datenbankabfragen ist es allerdings sehr viel. Während solcher Schübe ist es unter Umständen nicht möglich, alle Abfragen zu bearbeiten, während dies im Normalbetrieb gewährleistet ist.

In der Vergangenheit hat es auch andere problematische Nutzungsmuster gegeben: allen voran ein offenbar auf Seiten des Client abgebrochener Download größerer Teile des Planeten, der vom Server weiterverfolgt, aber vom Client mehrfach erneut versucht worden ist.

Welche Maßnahmen bestehen?

Generell ist Overpass QL von vorneherein für die Ressourcen-Steuerung ausgelegt. Dazu wird für jede Abfrage zunächst der RAM-Bedarf und die Laufzeit geschätzt. Dies kann entweder explizit der Nutzer mit den entsprechenden Direktiven tun, oder der Server nimmt Default-Werte von 180 Sekunden und 512MB RAM an.

Überschreitet eine Anfrage den RAM-Bedarf oder ihre geschätzte Laufzeit, wird sie abgebrochen. Dies stellt sicher, dass große Abfragen von den Nutzern auch als große Anfragen gekennzeichnet werden. Umgekehrt entscheidet der Interpreter vor der Ausführung der Anfrage, ob noch genug Ressourcen für die Ausführung zur Verfügung stehen. Dies stellt sicher, dass zumindest nicht einzelne große Anfragen den Server blockieren können.

Overpass QL ist zudem defensiv entworfen: eine aufwendige Abfrage hat auch einen langen und umständlichen Quelltext, so dass nur sehr selten versehentlich große Anfragen gestellt werden.

Warum ist speziell XAPI problematisch?

Im Gegensatz zu Overpass QL ist XAPI dafür konzipiert, Resourcen-Grenzen vor dem Benutzer zu verbergen. Das führt dann dazu, dass ausgerechnet die einfachsten Abfragen wie „xapi?*[highway]“ viel zu große Ergebnisse sowohl für den Server als auch für den Client liefern.

Tatsächlich ist dieser Konflikt zwischen Konzept und Realität die Haupt-Antriebsfeder gewesen, anstelle von XAPI eine imperative Skriptsprache zu konzipieren.

Welche Maßnahmen bestehen nicht und warum?

Keine Filterung besteht nach IP, User Agent oder ähnlichem.

Scraping von einer einzelnen IP-Adresse in solchem Umfang, dass es den Server blockiert, habe ich noch nicht beobachtet. Auf der anderen Seite gibt es Implementierungen, die für die Overpass-API-Daten als Proxy agieren. Dann sehe ich von vielen Nutzer-IP-Adressen nur eine Proxy-IP-Adresse, was dann fälschlicherweise nach einem Scraper aussieht.

Ein ähnliches Problem stellt sich bei den User Agents: Fast alle Browser, einschließlich einiger Internet-Explorer-Versionen, beginnen den User-Agent mit „Mozilla“. Browser-Mash-Ups sind aber erwünschte Nutzer. Es ist sogar noch schlimmer: würden einzelne Browser als User-Agents blockiert, sieht ein Website-Entwickler nicht reproduzierbare Unterschiede zwischen verschiedenen Browsern oder Versionen, für die man üblicherweise in den Browsern und nicht bei einem Datenlieferanten nach den Ursachen suchen würde.

Wie geht es weiter?

Auch in Zukunft wird der Server auf hohe Last einer populär werdenden Anwendung nur mit Überlast-Meldungen reagieren können. Es gibt nach dem Umzug durchaus erhebliche Reserven für den Normalbetrieb, aber mehr als eine Zehnerpotenz Lastreserve lässt sich nicht sinnvoll vorhalten.

Anders ausgedrückt: bei einem öffentlichen, kostenlosen Server sollte niemand erwarten, dass der Server jederzeit problemlos funktioniert, eben weil andere Nutzer den Service überlasten könnten. Wer Zuverlässigkeit garantieren möchte, sollte eine eigene Instanz betreiben – dafür ist die Software Open Source und leicht zu installieren.

Für mich selbst habe ich den Anspruch, Störungen in weniger als 24 Stunden zu beheben, so dass auch weiterhin Projekte ohne Geld für einen Server trotzdem Zugriff auf ein leistungsfähiges Backend für OSM-Daten bekommen können.

In diesem Sinne möchte ich mit der guten Meldung schließen, dass dank dem Lastproblem die Software durch neue Optimierungen jetzt zum Teil erheblich schneller antworten kann. Das „Geomon“-Team ist mittlerweile auf einen eigenen Server umgezogen, so dass nun größere Server-Power mit effizienterer Software für die gleichen Nutzerzahlen auf Overpass API zur Verfügung steht.

Wochennotiz Nr. 100

10.6.–16.6.

Das Projekt OSMBlog wird 100 Wochen alt [1]

Talk, Forum, Wiki & Blog

  • In iOS 6 wird Apple nicht mehr Google Maps sondern eigene Kartendienste anbieten. Datenlieferanten sind u.a. TomTom und OpenStreetMap.
  • Auf dem GEOsummit soll die Swiss OpenStreetMap Association gegründet werden. Treffpunkt ist Mittwoch, der 20.6.2012 um 12:45 am Haupteingang.
  • Für die Orte Heide, Hemmingstedt, Lohe-Rickelshof sowie Büsum stehen Luftbilder als TMS-Layer zum Erfassen bereit.
  • In der Arte-Mediathek liegt noch einige Tage ein zehnminütiger Bericht über aktuelle Entwicklungen der Kartografie, insbesondere OpenStreetMap und offene Karten, bereit.
  • Man nehme Stamen Maps, einen Projektor, einen Bleistift, ein Stoffstift und erhält …
  • Neue Bing-Bilder z.B. von Kanada stehen zum Mappen bereit.

ODbL

Humanitarian OpenStreetMap Team

  • In der neuen HOT Stellenausschreibung wird ein Projektkoordinator gesucht.

Karten

  • Ein neuer Base Layer „OSM Admin Boundaries“ steht auf dem Server der Uni Heidelberg zum Ausprobieren zur Verfügung.

Programme

  • Die Overpass API lief letze Woche im eingeschränkten Betrieb, z.B.  wurden bestimmte XAPI Abfragen geblockt. Roland hat inzwischen einen neuen Server und versucht, den alten Zustand wiederherzustellen. Bis auf einige Abfragen, z.B. “xapi?map… werden die Abfragen auf den neuen Server umgeleitet. Durch die inzwischen hohe Last gibt es eine Begrenzung von 400 Abfragen pro Minute, was einer Erfolgsquote von dann ca. 70% entspricht.
  • Das Repository von imposm zieht auf Github und möchte dadurch der Community eine einfachere Beteiligung ermöglichen.

Weltweit

  • Für den Einsatz in Krisengebieten will das OpenRelief-Projekt ein Fluggerät bauen. Basiskarte wird OpenStreetMap sein.

Sonstiges

  • Gesucht wird ein Praktikant mit Erfahrung mit Kartenrendering.
  • Ein Routenplaner zu Zeiten des Römischen Reiches.
  • Bei der Online-Konsultation zum Entwurf der Eckpunkte für „Offenes Regierungs- und Verwaltungshandeln (Open Government)“ kann bis zum 22. Juni 2012 das Eckpunktepapier kommentiert werden.

In eigener Sache

  • [1] In den fast zwei Jahren haben wir neben 100 Wochennotizen annähernd 30 Artikel von euch veröffentlicht und wollen auch in Zukunft auf diesen Seiten über das Projekt OSM berichten. Der neue OSM-Podcast soll in Zukunft regelmäßig erscheinen und mit dem neuen Newsletter möchten wir alle Interessierten informieren, die lieber eine monatliche Zusammenfassung lesen.

Wochennotiz Nr. 99

3.6. – 9.6.2012

mit MapCompare bis zu 36 Karten vergleichen [1]

Talk, Forum, Wiki & Blog

Konferenzen

  • Auf dem Hackweekend wurden die ersten Folgen des OSM-Podcasts aufgenommen. In Folge 0 stellt sich das Podcastteam vor, die Folge 1 mit Frederik Ramm als Gast beleuchtet das Thema Lizenzwechsel ausgiebig. Neben den OSM-Podcast wurde beim Hackweekend der Online Quality Assurance Editor programmiert.

Karten

  • Der neuer Layer “doubled places” bei keepright.at hilft beim Finden doppelt erfasster POIs, z.B. Gebäude und Node.
  • Auf der Website Map Compare können bis zu 35 Karten verglichen werden.

#switch2osm

  • Die Gemeinde Rommerskrichen will eigene Gebäude über die Wheelmap-Karte eintragen.

Programme

  • Mit dem Script opaQuery.pl können Datenabfragen der Overpass-Api per Batch gestartet werden.

Sonstiges

Wochennotiz Nr. 98

27.5. – 6.6.2012

freie Vektorkarten für Fahrradfahrer auf Android-Smartphones [1]

Talk, Forum, Wiki & Blog

  • Mit Hilfe der OSM-GPS-Datei und Tilemill hat Pascal Neis eine OSM-GPS-Grid-Karte erstellt.
  • Der Tillmann Verlag hat für Brühl (bei Köln) einen gedruckten OSM-Stadtplan herausgebracht, der durch klassische Werbung finanziert wird.
  • Für die Data Working Group werden noch ein oder zwei Schlichter gesucht.
  • Ein Video mit den Änderungen der letzen London Mapping Party.
  • Die Stadt Ahaus sammelt Daten für OSM. Für Fragen der Teilnehmer wird eine GPS-Sprechstunde angeboten.

Humanitarian OpenStreetMap Team

  • Bei einen Mappingexperiment des Camp Roberts / Relief 12-3 wurden in 48 Stunden 10 Flüchtlingscamps für 600.000 Menschen in OpenStreetMap erfasst.
  • Eine HOT-Stellenausschreibung für Indonesien.

Karten

Programme

  • Mit OSMpad können Hausnummern erfasst und als GPX-Datei zur weiteren Verarbeitung verschickt werden. Es gibt jeweils Android- und iPhone-Apps.
  • Die neue Version 2.2 von Maperitive bekommt eine Kommandozeilen-Konsole.

Sonstiges

  • OpenStreetMap ist für den Zedler-Preis für freies Wissen nomiert.
  • Sehr schöne Beispiele zur Nutzung von alten Karten zeigt diese Website.
  • Von TomTom werden Mapper zur Kartierung von Fidschi und vier weiteren Inseln gesucht.

Wochennotiz Nr. 97

20.5. – 26.5.2012

Der Fahrradtourenplaner auf paris.fr nutzt OSM Daten #switch2osm [1]

Talk, Forum, Wiki & Blog

  • Die Webseite CycleStreets nutzt in der neuen Version mehr Daten (surface quality, barriers, traffic calming, lighting). Der mobile Client(HTML5) wurde als ‘Best Application Design’ von Jakob Nielsen ausgewählt. Der Sourcecode ist Open Source und liegt auf Github.
  • Im Schweizer Tagesanzeiger wird über OpenStreetMap und den Tourenplaner tourpl.ch von Stefan Keller berichtet.
  • Auf der neuen Webseite OpenStreetMapData stehen Wasser-, Land und Küstenlinienpolygone bereit, die aus den aktuellen OSM-Daten aufbereitet werden. Jochen Topf beschreibt die Hintergründe in seinem Blogpost.
  • Der Rostocker Stammtisch besuchte das örtlichen Nahverkehrsunternehmen.
  • TomTom spricht über Open Source Maps. Erste Antworten von Henk Hoff und Richard Fairhurst.

Humanitarian OpenStreetMap Team

#switch2osm

Programme

  • Wer beliebige Koordinatengitter für Maperitive braucht, kann diese mrules nehmen.
  • Mit Hilfe von Leaflet neue Tweets auf einer Weltkarte darstellen.

sonstiges

Wochenvorschau

Wochennotiz Nr. 96

13.5. – 19.5.2012

Die neue Topo-Karte im openstreetmap.de Schaufenster [1]

Talk, Forum, Wiki & Blog

openstreetmap.de

OpenStreetMap-Foundation

  • Wem das Flugticket zur State of the Map nach Tokio bisher zu teuer war, kann eventuell das Angebot von Alitalia nehmen.

Humanitarian OpenStreetMap Team

  • Das HOT hat neue Projekte aufgesetzt und dafür Bilder von Bangladesch, Mali, Niger, Südsudan und Kolumbien bekommen.

Karten

Programme

In eigener Sache

  • Für die Wochennotiz und das Blog suchen wir neue Teammitglieder. Hauptsächlich sammeln und schreiben wir in der Woche Meldungen, am Wochenende wählen wir die Meldungen aus und erstellen die Wochennotiz. Zur Zeit suchen wir besonders Unterstützung beim Sammeln der Neuigkeiten und beim Kontrollieren/Korrigieren der fertigen Wochennotiz, bevor diese veröffentlicht wird. Aber auch über jede andere Mithilfe würde wir uns sehr freuen. Kontakt blog@openstreetmap.de