Phil: MaxClients Einstellungen (prefork und worker)

Hallo Zusammen,

Ich habe seit längerem Performance-Probleme auf meinem Webserver. Nun stellte sich heraus, dass die MaxClients Grenze erreicht wurde.

Fehlermeldung: Server reached MaxClients setting, consider raising the MaxClients setting.

Nun würde ich gerne das MaxClients Limit anheben, habe aber gelesen, dass man dabei vorsichtig sein soll.

prefork MPM
MaxClients 20

worker MPM
MaxClients 150

Nun ist mein Frage, was der Unterschied zwischen prefork und worker MPM ist und welche Werte ich maximal vergeben kann, ohne das es Probleme gibt.

Danke für Eure Hilfe! Grüsse!

  1. Moin!

    Nun würde ich gerne das MaxClients Limit anheben, habe aber gelesen, dass man dabei vorsichtig sein soll.

    Weil zuviele Clients dir den verfügbaren RAM-Speicher auffressen können, und der Server dann wegen der Auslagerung des RAMs fast zum totalen Stillstand kommen würde.

    prefork MPM
    MaxClients 20

    worker MPM
    MaxClients 150

    Nun ist mein Frage, was der Unterschied zwischen prefork und worker MPM ist und welche Werte ich maximal vergeben kann, ohne das es Probleme gibt.

    Das sind zwei unterschiedliche Arten des Apachen, Requests zu bearbeiten. Und sinnvollerweise änderst du nur genau den Wert, der für das von dir gewählte Modell zuständig ist - weil nur der was bewirkt.

    Prefork mit MaxClients 20 erscheint mir allerdings extrem gering.

    - Sven Rautenberg

    1. Guten Tag!

      Danike für die Hilfe! Woher weiss ich den ob mein Server prefork oder worker verwendet? Leider kommt es auf meinem Server bereits manchmal zum total stillstand weil das Limit erreicht wurde. Mein Server verfügt über 1024 MB RAM (bis 3'072 MB burstable).

      Was sind sinnvolle Werte die mein System nicht gefärden?

      Danke und Gruss.

      1. Für irgendwas gibt es ja die phpinfo();

        Dort steht Loaded Modules "prefork". Somit drängt sich die Frage auf, ob ich das ganze in "worker" ändern soll? Was wäre dann eine vertretbare Anhebung der MaxClients für "prefork"?

        Wie ändere ich mein System von "prefork" auf "worker"? Welche Risiken verbergen sich dahinter?

        1. Moin!

          Dort steht Loaded Modules "prefork". Somit drängt sich die Frage auf, ob ich das ganze in "worker" ändern soll? Was wäre dann eine vertretbare Anhebung der MaxClients für "prefork"?

          Wie ändere ich mein System von "prefork" auf "worker"? Welche Risiken verbergen sich dahinter?

          Das tust du besser nicht. Prefork ist für Linux-Systeme immer noch das präferterte und stabile Modell, weil Threading dort nicht so wunderprächtig funktioniert. Worker sind unter Windows das MPM der Wahl.

          Wenn du also tatsächlich nur 20 MaxClients konfiguriert hast, wundert mich gar nichts. Standardwert sind nach meinem Wissen 150. Damit kann man schon sehr weit kommen.

          Trotzdem reichte das für SELFHTML nicht, da haben wir den Wert knapp verdoppeln müssen für einzelne Server.

          Wenn das Erhöhen des Werts bei dir RAM-Probleme auslösen sollte, ist das allerdings ein Zeichen dafür, dass du deinen virtuellen Server mal etwas größer wählen solltest. Wobei ich eher glaube, dass der von dir beobachtete Stillstand vielleicht einfach nur damit zu tun hat, dass dein Browser keine weitere Connection zum Server eröffnen konnte, wegen der maximal 20 Clients, die erlaubt sind.

          - Sven Rautenberg

          1. Hi,

            Wenn das so ist! Vielen Dank für Deine Hilfe! Habe den Wert auf 150 angehoben und hoffe das Problem damit nun behoben zu haben.

            Vielen Dank und Grüsse, Philipp

  2. Vielleicht hier noch als Ergänzung.

    <IfModule mpm_prefork_module>
        StartServers          6
        MinSpareServers       3
        MaxSpareServers      10
        MaxClients           20
        MaxRequestsPerChild   0
    </IfModule>

    <IfModule mpm_worker_module>
        StartServers          2
        MaxClients          150
        MinSpareThreads      25
        MaxSpareThreads      75
        ThreadsPerChild      25
        MaxRequestsPerChild   0
    </IfModule>

    Welche Einstellungen würdet Ihr mir empfehlen?