ISP Config Crash nach Graceful Restart

Dieses Thema im Forum "Installation und Konfiguration" wurde erstellt von bts_freak, 22. März 2010.

  1. bts_freak

    bts_freak New Member

    Erstmal wollte ich mich mich für das tolle Forum und die Arbeit der Admins und Mitarbeiter bedanken, ich ahbe hier echt tolle Informationen und Hilfestellungen gefunden.

    Ich betreibe ISPConfig 3.0.1.6 auf eienr Ubuntu 9.10 VM mit Apache 2.2.12.

    Nach einer Weile des Betriebs blieb die GUI nach Änderung einiger Werte einfach hängen und funktionierte nicht mehr.
    Nach dem Überprüfen der Apache Logs kamen traten diese Zeilen im Error Log zu Tage:

    Code:
    Graceful restart requested, doing restart
    [Mon  Mar 22 08:30:02 2010] [notice] seg fault or similar nasty error  detected in the parent process
    [Mon Mar 22 08:30:02 2010] [error]  (9)Bad file descriptor: apr_socket_accept: (client socket)
    Also hab ich rumprobiert, den Apache gestartet und gestoppt. Es scheint, dass auch noch dem apache2 stop Kommando noch immer ein Prozess des Apaches weiterläuft, was dann beim Graceful Restart den Start verhindert. Der Apache bleibt dann einfach tot (aus).

    netstat -nlp liefert:
    Code:
    tcp        0      0 0.0.0.0:25               0.0.0.0:*               LISTEN      1823/master
    tcp        0      0  127.0.0.1:10024         0.0.0.0:*               LISTEN      960/amavisd  (master
    tcp        0      0 127.0.0.1:10025          0.0.0.0:*               LISTEN      1823/master
    tcp        0      0  0.0.0.0:3306            0.0.0.0:*               LISTEN      1102/mysqld
    tcp         0      0 127.0.0.1:783           0.0.0.0:*               LISTEN       1166/spamd.pid
    tcp        0      0 0.0.0.0:21               0.0.0.0:*               LISTEN      1836/pure-ftpd (SER
    tcp         0      0 78.46.99.253:53         0.0.0.0:*               LISTEN       1735/mydns
    tcp        0      0 127.0.0.1:53             0.0.0.0:*               LISTEN      1735/mydns
    tcp        0      0  0.0.0.0:22              0.0.0.0:*               LISTEN      943/sshd
    tcp6        0      0 :::25                   :::*                    LISTEN       1823/master
    tcp6       0      0 :::443                   :::*                    LISTEN      2118/apache2
    tcp6       0      0  :::993                  :::*                    LISTEN       1695/couriertcpd
    tcp6       0      0 :::995                   :::*                    LISTEN      1731/couriertcpd
    tcp6        0      0 :::110                  :::*                    LISTEN       1710/couriertcpd
    tcp6       0      0 :::143                   :::*                    LISTEN      1671/couriertcpd
    tcp6        0      0 :::8080                 :::*                    LISTEN       2118/apache2
    tcp6       0      0 :::80                    :::*                    LISTEN      2118/apache2
    tcp6       0      0  :::21                   :::*                    LISTEN       1836/pure-ftpd (SER
    und dies NACH dem Ausführen von
    Code:
    apache2  stop
    Man sieht, dass dort immernoch ein Apache Prozess auf Protokoll TCP6 läuft, obwohl für TCP keiner mehr da ist.

    Ich kann das zwar einfach behebn mit dem Befehl

    Code:
    fuser -k -n tcp 80
    Aber es dauert nicht lange, bis das Problem wieder auftritt (wobei es nicht jedesmal auftritt, manchmal braucht es etwas Zeit, bis ein Gracefull Restart den Apache brät).

    Ich hab die Confs gecheckt, es gibt keinerlei doppelte Listen Einträge oder so.

    Ich habe das System schon mal neu aufgesetzt, was den Fehler für eine Weile behoben hat, aber da er jetzt wieder auftritt, würde ich genre herausfinden, woran es liegt...

    Irgendjemand ne Idee?
     
  2. Till

    Till Administrator

    Da es eine VM ist, vermute ich mal dass der Apache eines der Socket Limits erreicht hat. Du kannst ja mal mit:

    cat /proc/user_beancounters

    checken, ob Limits überschritten wurden (letzte Spalte failcnt).
     
  3. bts_freak

    bts_freak New Member

    Vielen Dank für die fixe Antwort.... das File gibt es bei mir in dem angegeben Ordner nicht...
     
  4. Till

    Till Administrator

    Ok. Um was für eine VM handelt es sich?
     
  5. bts_freak

    bts_freak New Member

  6. bts_freak

    bts_freak New Member

    Ich weiß nicht, ob es hilft, aber auch wenn der Apache noch nicht "unstartbar" ist (wie es nach den beschriebenen Bad file descriptor error der Fall ist), bekomme ich regelmäßig Probleme beim Restart. Ich muss diesen in der Regel 2x ausführen, damit es klappt.

    Hier der Fehler:
    Code:
    /etc/init.d/apache2 restart
     * Restarting web server apache2                                                 ... waiting (98)Address already in use: make_sock: could not bind to address [::]:80
    (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
    no listening sockets available, shutting down
    Unable to open logs
                                                                             [fail]
    You have new mail in /var/mail/root
    root@singha:~# /etc/init.d/apache2 restart
     * Restarting web server apache2  
    In den Confs ist allerdings kein doppelter "Listen 80" Eintrag vorhanden.
     
  7. bts_freak

    bts_freak New Member

    Seltsam bzgl. dieses "address already in use" error ist, dass wenn ich einzeln "apache2 stop" and "apache2 start" ausführe, alles super klappt. Das tritt nur mit "apache2 restart" auf...
     
  8. Till

    Till Administrator

    Du kannst ja mal versuchen im apache2 init script ein sleep 5 oder so in die restart Funktion einzubauen, so dass er 5 Sekunden nach dem stoppen wartet, bis er wieder startet.
     
  9. bts_freak

    bts_freak New Member

    cool... sieht so aus als wenn das klappt. Der make_sock Fehler ist bis jetzt nicht mehr aufgetaucht... werd gleich mal checken, ob der Gracefull restart jetzt auch klappt....
     
  10. bts_freak

    bts_freak New Member

    Mist, den Apache zerlegt's immernoch mit demselben Bad File Descriptor Error sobald man ISPConfig anfasst und ein Graceful restart gemacht wird.
    Und dann geht weder manual stoppen oder starten. Bzw. stoppen geht, aber der Prozess bleibt stehen und dadurch geht das starten nicht mehr. Also bleibt nur der kill.
     
  11. Till

    Till Administrator

    Ändere einfach die graceful restart Funktiom im apache2 script so dass sie die gleichen Befehle enthält wie die restart funktion.
     
  12. bts_freak

    bts_freak New Member

    Hi Till, vielen Dank für die Mühe...
    Sorry, aber ich bin mit diesen Apache Scripten noch nicht sehr firm, daher die Nachfrage...

    Also /etc/init.d/apache2 hat in dem Sinn keine graceful restart funktion.
    /usr/sbin/apachectl hat sowas, und verlässlich kracht der Apache auch nach dessen Ausführung mit dem bereits beschriebenen Error.

    Ich könnte jetzt in apache2ctl den Part
    Code:
    restart|graceful)
        if $HTTPD ${APACHE_ARGUMENTS} -t 2> /dev/null ; then
            $HTTPD ${APACHE_ARGUMENTS} -k $ARGV
        else
            $HTTPD ${APACHE_ARGUMENTS} -t
        fi
    umändern, so dass nicht restart oder graceful an den apache ($HTTPD) gegeben wird, sondern ein Start und ein Stop Befehl mit Pause.

    Oder ich könnte in usr/sbin/apache2 rummachen. Welches Script meintest du?
     
  13. bts_freak

    bts_freak New Member

    Ok, hab den oben erwähnten Teil ausgetauscht mit Stop und Start.
    Ergebnis:
    - ohne sleep bekomme ich denselben Makesock Fehler (war zu erwarten)
    - ISP Config Restartet jetzt komplett bei Änderungen aus der GUI (inklusive dem Sleep, was heisst, es laufen immer ein paar Ajax Commandos ins Leere inkl. Fehlermeldung). Aber wenigstens fängt er sich dann wieder.

    Ich bin mir nicht so sicher, ob ich da so sehr glücklich drüber bin. Ich meine, die Graceful Restarts aus der ISPConfig Oberfläche haben ja schon ihren Sinn, warum sie "graceful" sind. Wenn ich jetzt in der ISPConfig rummache, kann ich mir sicher sein, dass der Apache ein paar mal komplett neu startet, worüber sich die drauf laufenden Webseiten sicher nicht freuen werden...
    Was das genau für Auswirkungen hat (Sessions, etc..) weiß ich allerdings nicht genau.
     
  14. bts_freak

    bts_freak New Member

    im letzten Kommentar meinte ich natürlich, dass Apache komplett Restartet, nicht ISPConfig... :)
     
  15. Till

    Till Administrator

    Ich vermute mal das Dein Problem damit zu tun hat, das der Server in einer VM läuft. Das Linux in der VM scheint zu lange zu brauchen um den Socket bei einem restart freizugeben, daher hilft auch das sleep dazwischen. Wie hoch ist denn die Last auf dem system? Poste mal die Ausgabe von:

    uptime
     
  16. bts_freak

    bts_freak New Member

    Hier die Ausgabe:
    root@singha:/usr/local/sbin# uptime
    14:32:09 up 10:43, 1 user, load average: 0.00, 0.00, 0.00

    Das System läuft praktisch im Leerlauf momentan. Auch der Host VirtualServer zeigt in der VM Console praktisch Nullast.
     
  17. Till

    Till Administrator

    Hmm, keine Ahnung woran es dann liegen könnte dass er den Port nicht schnell genug wieder freigibt.
     
  18. bts_freak

    bts_freak New Member

    Hi Till,

    super super vielen Dank trotz allem für die Mühe.

    Ich hab mir nochmal den Aufwand gemacht und ein komplett neues VM System aus dem Image aufgesetzt. Das erste was ich auf diem jungfräuhlichen System gemacht habe, ist ein "apache2ctl graceful" auszuführen. Der "Bad File Descriptor Error" taucht da auch auf in den Error Logs. Mit dem einzigen Unterschied, dass es ihn nicht so zum straucheln bringt und dass eine Meldung über den long lost child kommt (sieh unten). Unter Umständen ist das der Prozess, welcher ihn auf dem anderen System zum stocken bringt (da ja dort nach dem Bad FileDescriptor Error immer ein Prozess übrigbleibt, welcher auch mit "apache2 stop" nicht mehr zu killen ist).
    Das Log Ergebnis ist:

    Code:
    [Fri Mar 26 06:40:15 2010] [notice] Graceful restart requested, doing restart
    [Fri Mar 26 06:40:15 2010] [error] (9)Bad file descriptor: apr_socket_accept: (client socket)
    [Fri Mar 26 06:40:16 2010] [notice] Apache/2.2.12 (Ubuntu) PHP/5.2.10-2ubuntu6 with Suhosin-Patch mod_ssl/2.2.12 OpenSSL/0.9.8g configured -- resuming normal operations
    [Fri Mar 26 06:40:16 2010] [warn] long lost child came home! (pid 1886)
    
    Und die Meldung über den Nasty Error im Parent Prozess ist auch nicht da...

    Naja, anyway... vielleicht taucht ja noch eine Idee bei dir auf, ansonsten kann man es wohl nicht ändern...
     
  19. Burge

    Burge Member

    nihm doch mal nicht dieses fertige image. Setz dir ein linux host in einer vm auf und installiere darin ispconfig nach einem der zahlreichen anleitungen hier auf howto forge.

    Nebeneffekt so lernt man gleich mit wie ispconfig so laeuft welche packet/dienst was macht usw
     

Diese Seite empfehlen