[Allegro] avant/phpaci: wozu avdemo?

Thomas Berger ThB at Gymel.com
Fr Okt 5 11:56:02 CEST 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hallo Herr Lehmann,

> mich stört, daß die avdemo-datenbank mitlaufen muss.
> muss das wirklich sein?
> 
> ich sehe ja ein, daß avdemo da sein  muss, wenn es nur eine(!) 
> datenbank gibt....
> 
> 
> 
> deaktiviere ich sie in der avanti.conf:
> #[avdemo]
> #directory = /irgendwo_und_nirgends/avdemo
> #access = 3
> #konfiguration = a
> #indexparameter = cat
> ## hier folgen die Benuzer: "name=PASSWORD:access"
> #opac = OPAC:0
> #master = AVANTI:3
> #admin = AVANTI:3
> 
> 
> gibt es eine fehlermeldung im avanti.log:
> [2007-10-05 11:15:40]  (SLAVE) <conn 1> No directory for DB=avdemo 
> specified in avanti.confNo directory
>  for DB=avdemo specified in avanti.confslave finished ok <at avanti.c, 
> line 620>                       

Das liegt daran, dass avanti2 eine gescheiterte Prefork-Strategie hat:
Gibt es eine Verbindung (dann sollte alles schnell gehen), dann werden
(eben nicht) prophylaktisch ein oder mehrere avanti-cl's gestartet,
nach Abarbeiten eines Jobs wird erneut ein avanti-cl gestartet,
kommt kein neuer Job, verendet dieser avanti-cl. Dieses "Verenden"
ist extrem unkontrolliert, es versucht den nicht empfangenen Job
mit Standardwerten auf Biegen oder Brechen auszufuehren, d.h. es
oeffnet die Demodatenbank, um nichts zu machen und spaetestens dann
gibt es eine Fehlermeldung, oder eben frueher, wenn die Demo-Datenbank
keine Schreibrechte hat, oder nicht exisitiert, oder in der
Konfiguration fehlt...

Die ganze Angelegenheit ist m.E. voellig vergeigt, eine sinnvolle
Strategie kann nur darin bestehen, existierende avanti-cl's erneut
zu nutzen, v.a. wenn dieser avanti-cl sich nicht voellig neu
initialieren muss, sondern die Datenbank geoeffnet behaelt. Das ist
aber aus Designgruenden absolut ausgeschlossen, nicht zuletzt, weil
die Zentrale Information, naemlich um welche Datenbank es sich
handelt, aus historischen Gruenden erst nach dem eigentlichen Job
uebertragen wird und daher von avanti nicht analyisiert wird (daher
kann avanti auch nicht entscheiden, ob sich existierende avanti-cl's
fuer eine Verarbeitung anbieten oder ein "frischer" zu nehmen ist).

Eine Hilfsstrategie koennte so aussehen, dass die timeout-Setzungen
von avanti-cl erst dann greifen, wenn ueberhaupt etwas anliegt:
Avanti haette dann einen funktionierenden "Pool" von avanti-cl's,
die es nacheinander nutzt, ist eine untere Grenze (etwa 5)
unterschritten, werden bis zum Erreichen einer oberen Grenze (etwa 15?)
neue aufgestartet, die dann recht lange (1h?) leben bleiben duerfen.
Ist beim Eintreffen eines Jobs kein einziger avanti-cl frei, so
darf in diesem Moment natuerlich nur einer erzeugt werden, um nicht
alles unnoetig zu verlangsamen.

viele Gruesse
Thomas Berger

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3-nr1 (Windows XP)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHBgoyhKFJT0F1FsoRAvNpAJ9O876eYRU56E20hMEC/Nqm7/a/YgCfc6rY
6nhqBKLuHXhPu4uvA6hODJU=
=szL3
-----END PGP SIGNATURE-----



Mehr Informationen über die Mailingliste Allegro