Avanti 2.1.1 logfile stottert
Martin Butkus
m.butkus at tu-bs.de
Di Dez 2 11:22:03 CET 2003
Lieber Herr Berger, liebe Liste,
> (und ich habe den Eindruck, dass das exzessive Loggen Einfluss
> auf die Performance hat bzw. dass hier Dinge Zeichenweise
Das kann sein. Verbessert sich denn die Performance, wenn man
das Logging abschaltet?
> transportiert werden, die besser bufferweise transportiert
Eigentlich nicht. Das Frontend buffert grundsätzlich alle Transfers,
auch diejenigen für den stderr-Kanal des Kindprozesses.
Das Problem scheint vielmehr zu sein, daß die Stderr-Pipe von Seiten
des Kindprozesses nur häppchenweise gefüllt wird, der Parent-Prozeß
erwartet aber (unberechtigterweise), mindestens eine ganze Zeile aus
der Pipe lesen zu können. Offenbar hatte ich Glück, mein Rechner
ist scheinbar so schnell (oder langsam?) daß das immer geklappt hat.
Dieses Verhalten des Kindprozesses liegt darin begründet, daß für
die Kommunikation via Pipes das normale stdio-Buffering abgeschaltet
wurde. Macht man das nicht, gibt es u.a. Probleme mit Clients, die
nach "AVANTI:EOJ" kein Zeilenende "\n" senden, aber dennoch sofort
eine Antwort erwarteten. Es gab einige User auf der Liste, die
dieses für ihre Skripte benötigen.
Für stdout und stderr kann man das Buffering natürlich dennoch
einschalten, stdin muß dagegen weiter ungebuffert bleiben [Alternativ
könnte man das Protokoll ändern, dann müßten die betroffenen Benutzer
aber ihre Skripte anpassen.
Außerdem werde ich die Logging-Routine ändern, so daß es auch dann
zu keinem "Stottern" mehr kommt, wenn keine ganze Zeile auf einmal
eingelesen werden kann.
Die neue Version folgt erst in den nächsten Tagen, weil ich z.Z.
an einem PHP-basierten Webfrontend für den Avanti stricke, das ich
der neuen Version evtl. gleich mit beilegen würde.
Freundliche Grüße,
Martin Butkus
Mehr Informationen über die Mailingliste Allegro