Avanti-W: Lange Jobs

Thomas Berger ThB.com at t-online.de
Mi Dez 13 18:28:04 CET 2000


Lieber Herr Bachschneider,

> 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?

> 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!

bind() failed kommt, wenn der Server-Port noch belegt ist.
Client-Sockets binden nicht und erwarten, dass das System
eine freie Portnummer zuweist. Webserver benutzen auch Sockets
und ich habe noch nicht gehoert, dass man einen NT-Server
neu booten muss, wenn ca. 15.000 http-Requests eingetroffen
sind. Es kann natuerlich sein, dass Avanti intern alle
gewesenen Verbindungen oder threads seit dunnemals verwaltet 
und irgendwann dabei platzt, das erklaerte das drastische 
Wachsen des Speicherabbilds im Betrieb.


>  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!

... was ja nicht sein muss: Schliesslich kommt ein Job nach dem
anderen, avanti bemerkt das Ende der jeweiligen Jobs und schickt
das Ergebnis, erst nach dem Avanti:EOR schickt der Client den
naechsten Job.


> 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.

die Portierung von avanti-w nach avanti-x benutzt m.W. fork(),
denn die Thread-Unterstuetzung der U**Xe war damals nicht so
gut und ist es vermutlich auch heute noch nicht so ganz. 
Allerdings benutzt avanti-x auch shared memory, damit nicht
so viel zu portieren ist. Das macht ihn dann auch recht
langsam.

viele Gruesse
Thomas Berger





Mehr Informationen über die Mailingliste Allegro