zugegeben, der Thread-Titel ist nicht wirklich aussagekräftig, aber ich will versuchen mein Problem kurz zu erklären:
Ausgangssituation ist wie folgt:
Es geht um einen Apache-Webserver (2.2.9) auf einem Debian 32 Bit mit 2.6.26er Kernel. Er dient der Auslieferung eines Webshops.
Lokal ist dort auch die (My-)SQL-Datenbank des Shops installiert (momentan nur ein Testsystem, was leider live läuft).
Da es sich um einen eCommerce Auftritt handelt, fragt der Shop per XML-Messages Daten wie z.B. Artikelpreise bei einer Middleware zwischen Shop und ERP-System an. Dieses komplette Middlewarekonzept besteht aus einem total kranken Message Broker und der eigentlichen Schnittstelle zum Shop, letzter genannte ist eine Java-Applikation.
Nun das Problem:
Ziemlich oft (min. 1x/Tag) hängt sich die Java-Schnittstelle in einem unendlichen sleep() auf und feuert scheinbar irgendeinen Dreck gegen den Apachen. Wirklich debuggen können wir das nicht, weil das Teil weder Logs schreibt noch quelloffen für uns ist.
Fakt ist, dass ich dann immer den Apache und den Broker stoppen muss und die Schnittstelle killen muss.
ABER:
Wenn der Apache gestoppt ist, werden trotzdem noch fin_wait1 sowie last_ack Verbindungen gehalten (netstat -n |grep :80).
Diese Dinger haben scheinbar einen riesigen Timeout und werden ewig nicht geschlossen.
Fakt ist, dass die Schnittstelle wieder in ein unendliches sleep() fällt, wenn diese Verbindungen noch offen sind.
Ein
Code: Select all
ifdown eth0 && ifup eth0
Code: Select all
/etc/init.d/networking restart
Wie bekomme ich diese Verbindungen ohne Reboot geschlossen? (Das Problem der Schnittstelle soll nicht Gegenstand des Threads sein, das hat sich hoffentlich bald erledigt.)
Gruß
dante