Avanti-W: Lange Jobs

Volker Bachschneider V.Bachschneider at t-online.de
Mi Dez 13 18:05:47 CET 2000


Sehr geehrter Herr Berger, liebe Liste

Hier reden wir ggf. aneinander vorbei:
>> Aber was Ihr Perl-Script angeht eine Idee. Könnte es sein, daß der Socket
im
>> Streßbetrieb nicht geschlossen wird und Sie Avanti überfüttern - wie eine
>> Gans beim Mästen?
>Man muss differenzieren zwischen avanti-x, avanti als Systemdienst
>und avanti als interaktife Anwendung. avanti-x (Solaris) ist m.E.
>sauber. avanti-NT-Dienst schliesst waehrend jeder Antwort die
>Verbindung und beschwert sich in der Logdatei ueber den Client.
>avanti-interaktiv hat dieses Problem nicht. Ich selber vermute
>eher, dass avanti mit dem Speichermanagement (Jobs und Resultate
>werden mit shared memory zwischen Server und procav-Thread
>hin- und hergeschaufelt) nach einiger Zeit Probleme bekommt.
Bekommt Avanti kein socket.close() vom Client - was wirklich gemein ist -
setzt es die Verbindung erst nach dem eingestellten Socket-Timeout zurück.
Nach ein paar tausend offenen Sockets sind aber die ausgehandelten Ports am
Ende zumal die Winsock grundsätzlich kein reuse() unterstützt: bind()
failed! Schicken Sie jedoch - und das war gemeint - in eine offen Verbindung
Job um Job nimmt Avanti alles brav an, wird aber aufgefüllt bis zum procav
error!Gleichviel, das Problem mit dem shared memory vertritt ja so auch Herr
Höppner. Weil aber WinXX nunmal kein fork() beherrscht kann man den Socket
nicht an einen eigenen Kindprozeß übergeben und an den Thread läßt er sich
nicht binden. Alternativ läßt sich das plattformübergreifend vielleicht mit
einer select()-Schleife lösen, so ist der Ansatz bei Medusa. Was m.E. aber
feststeht, in Avanti so wie er ist läßt sich ohne Hrn. Veltkamp nicht mehr
sinnvoll eingreifen, da baut man ihn besser gleich ganz neu. Das ginge so:
Die Datenzugriffe auf Dateiebene in COM-Objekten kapseln und mit höher
abstrahierten Schnittstellen versehen. (Wird dran gearbeitet!?) Socket- oder
andere Server in Perl oder Python aufsetzen und dort auf die Objekte
zugreifen. Dann würden wir alle nicht mehr im Trüben fischen. Die Linux /
Unix-Welt bliebe erstmal draußen vor, kostet ja eh nur extra.
Hätten Sie jedoch mit den genannten Plattformunterschieden recht, dann sind
vermutlich alle Avantis clean, bloß Microsoft hat bei der IPC via shared
memory Bockmist gemacht. Und man setzt Avanti in ein Unix/Linuxbett - wo er
ja fürs Web auch hingehört - mit der Option auf fork() umzustellen. WinXX
Ende.

MfG

Volker Bachschneider





Mehr Informationen über die Mailingliste Allegro