[Talk-de] Overpass sehr langsam

Roland Olbricht roland.olbricht at gmx.de
So Dez 29 18:41:38 UTC 2013


Hallo zusammen,

> Kommt es mir nur so vor, oder ist Overpass seit Beginn der
> Weihnachtsfeiertage extrem langsam geworden? Anfragen, die vorher
> 1-30sec dauerten laufen nun oftmals 3min oder länger. Zeitgleiche
> Requests gehen fast gar nicht (http 429: too many requests)...

Es gibt auf overpass-api.de eine Reihe von Ereignissen, die gerade in der Tat 
für Verlangsamung sorgen. Verbesserung auf das alte Niveau ist ab Silvester zu 
erwarten, Verbesserung auf ein besseres Niveau ab Ende Januar. Im Detail:

Zunächst einmal hat seit Einführung des Export-Links von osm.org aus (siehe 
unter "Export", dann unter dem "Export"-Button) für vermehrte übergroße Map-
Abfragen gesorgt - zum Teil bis zu dem halben Planeten. Da die Abfrage aber 
auch eine Reihe von Export-Anliegen sinnvoll löst, möchte ich den Link nicht 
wieder entfernen. Um zu verhindern, dass die Map-Calls zu sehr auf den Server 
insgesamt durchschlagen, habe ich den Parameter für parallel von der gleichen 
IP-Adresse mögliche Abfragen von 2 auf 1 gesenkt. 

Damit richten insbesondere die beiden häufigsten problematischen Verhalten nur 
noch halb so viel Schaden an: Vermeidbare Last erzeugt es, eine große Anfrage 
zu stellen, nach einigen Sekunden abzubrechen und dann sofort die gleiche 
Anfrage erneut zu stellen.

Generell kann man eine laufende Abfrage mit
http://overpass-api.de/api/kill_my_queries
abbrechen und Platz für eine alternative Query schaffen.

Ein anderes problematisches Verhalten ist es, dutzendweise Anfragen ohne 
Rückmeldung parallel zu stellen. Das erzeugt Lastspitzen bzw. würde 
Lastspitzen erzeugen und die Zeit bis zum Abschluss der letzten Abfrage ist 
genauso lang wie bei einer sequentiellen Abarbeitung. In manchen 
Einsatzszenarien, z.B. einer Slippy Map mit Ereignissteuerung, lässt es sich 
aber nur schwer Client-seitig vollständig verhindern.

Daher behält der Server bei mehreren parallelen Anfragen alle weiteren 
Anfragen für bis zu 15 Sekunden im Wartezustand und beendet sie erst dann, 
wenn bis dahin durchgehend Anfragen von der gleichen IP-Adresse diese Abfrage 
blockieren, sonst werden diese Anfragen nacheinander abgearbeitet.

Der zweite große Komplex sind Areas. Um Ärger mit nicht orientierten-Wegen und 
mehr oder weniger falschen Relationen-Rollen gleich im Ansatz zu vermeiden, 
benutzt die Overpass API ein sehr einfaches Flächen-Modell

- der Südpol ist außen
- alle übrigen Punkte sind genau dann innen, wenn sie vom Südpol durch eine 
ungerade Zahl Kanten getrennt sind
- Area-Beschreibungen, bei denen in irgendeinem Punkt eine ungerade Zahl 
Kanten zusammenkommt, werden als ungültig verworfen.

Das führt nur dann zu einem Fehler, wenn Gebiete hinzugefügt werden, die den 
Südpol umschließen; bei diesen verwendet der Algorithmus irrtümlich den Rest 
der Erdkugel statt des beabsichtigen Gebiets als inneres Gebiet, und jede 
Area-Abfrage ist dann mehr oder weniger relevant für dieses Gebiet.

Das ist nicht passiert bis
http://overpass-turbo.eu/s/1T6
bzw.
http://overpass-turbo.eu/s/1T5

Provisorisch nehme ich Gebiete mit admin_level=2 aus der Area-Erzeugung 
heraus. Danach gilt es, den Fehler in der Software zu beseitigen.

Das wird mit der nächsten Version v0.7.50 passieren und leitet über zum 
dritten Ereignis: v0.7.50 hat eine deutlich andere Datenbank-Struktur, um 
einerseits Abfragen mit großen Bounding-Boxen zu beschleunigen, andererseits 
alte Datenbestände abfragen zu können und so z.B. bequem beliebige Undo-
Operationen ausführen oder Änderungen verfolgen zu können. Intern verringert 
es drastisch den Aufwand, Änderungen nachzuverfolgen, was bisher mit den 
Augmented Diffs, die in Echtzeit erzeugt werden müssen, sehr mühsam ist. 
Augmented Diffs werden dann zur Abfragezeit für den exakt passenden Zeitraum 
erzeugt statt in Echtzeit jede Minute.

Dafür berechne ich gerade die notwendige Datenbank neu und verarbeite dafür 
alle Daten seit dem Lizenzwechsel im September 2012. Da das mit niedrigster 
Priorität passiert, wird es voraussichtlich einen Monat bis Ende Januar 
dauern, die 1,5 Jahre Änderungen zu durchlaufen.

Theoretisch darf sich diese Neuberechnung nicht auf die laufende Datenbank 
auswirken. Praktisch lässt sich nicht ausschließen, dass nicht allein das oben 
geschilderte Große-Map-Exporte-Phänomen die Last auslöst, sondern auch die 
neue Datenbank.

In jedem Fall ist daher ab Ende Januar mit einer generellen Verbesserung zu 
rechnen, und spätestens schon Silvester sollte das Problem mit der Area-
Neuberechnung keine Last mehr verursachen.

Ich werde versuchen, einen Blogbeitrag auf blog.openstreetmap.de zu verfassen, 
wenn die aktuellen Area-Probleme geklärt sind.

Viele Grüße,

Roland





Mehr Informationen über die Mailingliste Talk-de