Website ist manchmal einfach nicht erreichbar

  • Hallo Liebe i-MSCP Community,


    ich habe seit gestern das Problem das ich versuche auf meine Website zu kommen. Es funktionierte nicht mehr ich schaute mir daraufhin umgehend die Log an von Apache.
    Dort stand:


    Code
    1. [Sun Jul 23 11:48:40.248950 2017] [mpm_worker:notice] [pid 15448:tid 139902506264448] AH00295: caught SIGTERM, shutting down
    2. [Sun Jul 23 11:48:41.049364 2017] [suexec:notice] [pid 16023:tid 139706677307264] AH01232: suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)
    3. [Sun Jul 23 11:48:41.093023 2017] [mpm_worker:notice] [pid 16026:tid 139706677307264] AH00292: Apache/2.4.10 (Debian) OpenSSL/1.0.1t configured -- resuming normal operations
    4. [Sun Jul 23 11:48:41.093077 2017] [core:notice] [pid 16026:tid 139706677307264] AH00094: Command line: '/usr/sbin/apache2'
    5. [Sun Jul 23 11:48:41 2017] [notice] vlogger: DBI usage tracker dump interval set to 30 seconds
    6. [Sun Jul 23 11:48:41 2017] [notice] vlogger: started CustomLog Handler -- resuming normal operations
    7. [Sun Jul 23 11:48:59.111810 2017] [mpm_worker:error] [pid 16026:tid 139706677307264] AH00287: server is within MinSpareThreads of MaxRequestWorkers, consider raising the MaxRequestWorkers setting
    8. [Sun Jul 23 11:49:01.114081 2017] [mpm_worker:error] [pid 16026:tid 139706677307264] AH00286: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting

    Daraufhin startete ich Apache2 erst einmal neu woraufhin es auch für 30 Sekunden wieder funktionierte. Nach dem ich dann wieder abgewiesen wurde habe ich dann gegoogelt und fand viele seiten um das Problem zu lösen, wie z.B


    https://i-mscp.net/index.php/T…s-websites-not-reachable/
    https://i-mscp.net/index.php/T…52-Web-server-is-hanging/
    https://www.liquidweb.com/kb/apache-optimization/


    und noch viele weitere Hilfe Seiten leider vergebens, ich habe sie erhöht und optimiert und herumprobiert jedes mal ohne erfolg.


    Vielleicht hat einer von euch noch eine Idee ich habe keine mehr es war eine sehr lange Nacht :D



    Liebe Grüße und Danke im vorraus

  • Hi,


    hast Du die MaxRequestWorkers vom Apache schon angepasst ? Scheinen zu wenig zu sein.
    --> consider raising the MaxRequestWorkers setting


    Greez
    BeNe

  • OK! Hast Du einen vServer oder eine Hardware Maschine ?
    Bei den meisten vServern gibt es ein Maximum für alles mögliche (Verbindungen, geöffnete Dateien usw.)
    Wobei ich erstmal nicht denke das es daran liegt. Bei 1000 Workers benötigst Du auch mehr RAM. Was hat dein Server an Arbeitsspeicher ?
    Wieviele Domains laufen den auf deinem Server ?


    Denke mal fast das ein Script oder sonstige Anfragen (woher auch immer) am Apache ankommen und die Worker auslasten - so das für die kommenden nichts mehr geht.
    Am besten nochmals die Kunden Apache Logs prüfen ob Du was dazu finden kannst. Würde es mit apachetop, netstat usw. versuchen

  • Hey es ist kein V-Server
    Die Spezifikationen:
    Intel(R) Xeon(R) CPU E3-1245 V2 @ 3.40GHz
    RAM: 4 x 8192 MB


    Es Läuft lediglich eine Domain darüber und 3 Sub Domains.


    Was ich noch erwähnen möchte ist das auf dem Server Proxmox Installiert ist,
    Die Machine die für die seite zuständig ist und nur IMSCP drauf läuft hat zugewiesene 8 Kerne & 4096 RAM bekommen ausgelastet sind im schnitt 450 Megabyte.

  • Das sollte schon passen. Hast Du was in den Logs gefunden oder die Verbindungen überprüft ?
    Vielleicht siehst Du über den Apache Server Status mehr ?


    Prüfe mal ob das Modul aktiv ist

    Shell-Script
    1. apache2ctl -M | grep status

    Wenn nicht aktiviere es.


    Wenn dass passt nimm am besten einen browser für die shell wie lynx oder w3m und rufe die server-status Seite auf:


    Shell-Script
    1. w3m localhost/server-status

    Damit siehst Du alle Anfragen mit URL bzw. der Anfrage. Da sollte es sehr schnell auffallen wer die Threads aufbraucht.


    // EDIT


    Ja, nach deinem letzten Screenshot gehen wohl sehr viele Anfragen auf deinen Server ein. Am besten blockst Du die IP´s.

  • apache2ctl -M | grep status

    Code
    1. status_module (shared)


    w3m localhost/server-status



    Code
    1. localhost contacted. Waiting for reply...


    Ich hatte dir zeitweilig ein screen geschickt gehabt da geht ziemlich schnell hervor das es nen Russischer Server ist der wirklich richtig lust auf mich hat :D


    //EDIT
    AUf den screenshot sind ca. 10 % zu sehen. Die liste ist Ellen lang hast du für mich ne Idee wie die IP Range bannen kann ? Sie einzeln zu bannen ist ein wenig viel :D

  • Shell-Script
    1. iptables -I INPUT -m iprange --src-range 185.188.204.1-185.188.204.254 -j DROP

    Ich weis nicht genau wie groß der Bereich ist - aber damit hast Du schon mal ein Class C Netz mit 254 Host draußen.

  • Habe das Thema als Erledigt markiert.
    Warst dann schneller als ich mit dem Ban der IP´s ;) Ja, gerne kein Problem.


    Noch ein Tipp am Rande:
    Wenn Du eh schon selber mit Proxmox eine Virtualisierung am laufen hast, bau Dir eine Firewall auf und setzte diese vor deine Webserver.
    Kannst z.B. pfSense oder den fork OPNsense nehmen. Ist beiden OpenSource und kommt mit viele Funktionen. Snort und Suricata würde bei solchen Sachen helfen und blocken.
    Alternative ist noch Fail2ban.


    Greez