[OSM-Devserver] Tirex auf Gauss

Jochen Topf jochen at remote.org
Fr Mär 19 09:28:21 CET 2010


On Thu, Mar 18, 2010 at 09:59:25PM +0100, Nop wrote:
> Am 16.03.2010 08:52, schrieb Frederik Ramm:
>>> 4. Renderer anhalten, DB updaten, Renderer wieder starten
>
>> Puh, da gibt es verschiedene Moeglichkeiten. Du kannst einfach den
>> tirex-renderd beenden
>>
>> sudo /etc/init.d/tirex-renderd stop
>> (evtl. einen Augenblick warten, da laufende Rendervorgaenge noch beendet
>> werden - ps aux|grep tirex-renderd sagt Dir, ob noch was laeuft)
>
> Der Update erfolgt in einem cronjob. Wenn ich warten wollte, müßte das  
> irgendwie per Befehl gehen. Wie würde man das formulieren?

Ist mir jetzt nicht ganz klar, was Du willst.

Aber Du solltest auf keinen Fall den renderd oder den master beenden. Dafür
gibt es - wie gesagt - andere Methoden, die nicht dazu führen, dass irgendwo
was verloren geht.

Die richtige Methode ist dem master zu sagen, dass er nichts mehr neu
rendern soll:

tirex-send -w0 stop_rendering_bucket bucket=BUCKET

Das machste für alle Buckets.
Dann kannste einfach einen

sleep 120

machen oder so, um 2 Minuten zu warten. Ganz korrekt würde man das machen
indem man schaut, ob noch was gerendert wird und erst dann weiter machen,
wenn das nicht mehr der Fall ist. Ich schreib nachher mal ein kleines
Programm, was das macht.

Dann kannste Deine Updates machen, dann dem renderd den HUP schicken,
damit er die neuen Styles einliest:

/etc/init.d/tirex-renderd reload

Und dann weiterlaufen lassen mit:

tirex-send -w0 continue_rendering_bucket bucket=BUCKET

>> ... Tabellen umbenennen ...
>> touch /osm/tiles/planet-import-complete
>> sudo /etc/init.d/tirex-renderd start
>
> Wenn ich den Renderer anhalte, dann stellt tirex trotzdem  
> render-requests ein. Die bleiben dann anscheinend hängen - momentan  
> hängen zwei Renderanfragen dauerhaft fest und blockieren die 
> Renderqueues.

Du sollst den renderer ja auch nicht anhalten. :-)

> Das scheint sich nicht von selbst zu reparieren. Vielleicht läßt sich  
> der Renderer da noch verbessern.

Doch, das repariert sich von selbst. Da ist ein Timeout drin. Aber der ist
relativ lang, weil es ja sein kann, dass es so lange dauert, bis ein Tile
gerendert ist.

> Wie kann man den Renderer da resetten?
>
>>> 5. Hohe zoomlevel aus einer Liste von Koordinaten vorrendern
>> Das render_list wird zwar noch unterstuetzt (mit dem modtile_sock, nicht
>> renderd_sock), aber es waere besser, Du wuerdest tirex_batch benutzen,
>> das stopft einfach alles in die Queue und ist dann sofort fertig, statt
>> zu warten. Es gibt eine manpage dafuer.
>
> Auf der manpage habe ich keine Möglichkeit gefunden, eine Datei mit  
> Tilekoordinaten einzulesen. Ich hab' mir eine solche Datei generiert,  
> die gezielt nur einen Request pro metatile enthält und will sie  
> wiederverwenden. Das geht dann wohl nur mit render_list, oder?

tirex-batch ist der Ersatz für render_list. tirex-batch kann alles, was
render_list kann und noch mehr.

tirex-batch --prio=20 <DATEI

liest aus der DATEI Zeilen im Format
map=foo x=232 y=234 z=36
und gibt die an den master weiter.

Wenn Du eine Datei im render_list format hast mit nur X Y Z drin:
232 234 12
dann kannste die einfach umformen mit:
while read x y z; do echo "map=foo x=$x y=$y z=$z"; done

Also alles zusammen etwa so:
(while read x y z; do echo "map=foo x=$x y=$y z=$z"; done)<DATEI | tirex-batch --prio=20

Jochen
-- 
Jochen Topf  jochen at remote.org  http://www.remote.org/jochen/  +49-721-388298