Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Speicher-limitierung

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Speicher-limitierung

    Hallo Community,

    gibt es eine Möglichkeit, den Gesamtspeicher für PHP zu limitieren? In der php.ini finde ich nur die Möglichkeit den Speicher pro Prozess zu limitieren.
    Ich habe PHP 5.4 als Modul auf einem Unix System mit Apache2 laufen.

    Grüße

  • #2
    In der Art wie du dir das vorstellst nicht, nein.
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Zitat von lstegelitz Beitrag anzeigen
      In der Art wie du dir das vorstellst nicht, nein.
      Schade, aber danke für deine Antwort. Kannst du mir evtl. noch bei dem folgenden Problem helfen? Ich habe das Problem, dass bei meinem Webserver der Prozess httpd2-prefork sehr oft läuft, min. 15mal wenn ich ca. 50 User simuliere. Dadurch steigt die Auslastung der CPU auf 100%. In der server-Tuning.conf habe ich schon die Werte angepasst, anscheinend jedoch keine richtige Konfig dafür erstellt. Aus der Seite http://httpd.apache.org/docs/2.2/mod...tml#maxclients werde ich irgendwie nicht schlau. Ich habe auch noch xcache installiert, das hat jedoch auch nix gebracht. Im Frontend läuft Wordpress mit relativ viel JavaScript auf der Startseite, kann es sein dass die Last dadurch so hoch ist? CPU: Intel(R) Xeon(R) CPU E5-2690@ 2.90GHz

      Grüße


      <IfModule prefork.c>
      StartServers 2
      MinSpareServers 3
      MaxSpareServers 3
      ServerLimit 600
      MaxClients 600
      MaxRequestsPerChild 1000
      </IfModule>

      # worker MPM
      <IfModule worker.c>
      StartServers 3
      MinSpareThreads 25
      MaxSpareThreads 75
      ThreadLimit 30
      MaxClients 600
      ThreadsPerChild 30
      MaxRequestsPerChild 1000
      </IfModule>

      Kommentar


      • #4
        Hi

        Javascript wird Clientseitig ausgeführt.

        MinSpareServers 3
        MaxSpareServers 3
        Lass da mal default...

        Code:
        MinSpareServers 5
        MaxSpareServers 10
        Was sagt das access bzw. error Log?

        Kommentar


        • #5
          Zitat von blueman1991 Beitrag anzeigen
          min. 15mal wenn ich ca. 50 User simuliere.
          Es gibt ein Unterschied zwischen "50 Useren" und 50 Threads die permanent ein PHP Script aufrufen. Was simulierst du also wie?

          Kommentar


          • #6
            Es gibt leider keine goldene Faustregel, wie der Webserver einzustellen ist. CPU utilization spielt auch eine eher untergeordnete Rolle, RAM ist ein sehr viel bedeutender Faktor.
            Aus dem Bauch heraus ist MaxClients mit 600 sehr viel zu hoch und SpareServers ebenfalls.

            Google mal nach "Tuning Apache Performance"
            (hier mal drei ganz interessante Links)
            http://www.huschi.net/10_54_de-hochl...ce-tuning.html
            https://www.digitalocean.com/communi...er-performance
            http://www.thomas-krenn.com/de/wiki/...ormance_Tuning
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Zitat von ericle Beitrag anzeigen
              Hi

              Javascript wird Clientseitig ausgeführt.



              Lass da mal default...

              Code:
              MinSpareServers 5
              MaxSpareServers 10
              Was sagt das access bzw. error Log?
              done!

              Im error log steht folgendes:
              [Fri Feb 28 12:00:15 2014] [notice] caught SIGTERM, shutting down
              [Fri Feb 28 12:00:18 2014] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
              [Fri Feb 28 12:00:18 2014] [notice] Apache/2.2.12 (Linux/SUSE) mod_ssl/2.2.12 OpenSSL/0.9.8j-fips configured -- resuming normal operations

              Habe Apache danach mal neugestartet und Test nochmal durchgeführt.



              Nach kurzer Zeit entsteht so viel Last, dass der Server nicht mehr ansprechbar ist und die Responsetime auf fast 1 Minute steigt.


              @erc:
              Ich habe das Programm LoadUIWeb im Einsatz. Dieser Simuliert 50 User, die gleichzeitig auf die Startseite zugreifen. Meintest du es so?

              @Istegelitz:
              danke. Werde es mir gleich mal anschauen. Was das angeht habe ich schon lange gesucht und wie du schon sagtest, lediglich Optimierungen für den RAM bezogen gefunden. Dieser ist jedoch dauerhaft im grünen Bereich und wurde auch schon zum Test erweitert.

              Ich habe zu dem Thema noch eine Einstellung von RLimitCPU gefunden. Wäre es hier ratsam dies zu testen?

              Kommentar


              • #8
                Zitat von lstegelitz Beitrag anzeigen
                Es gibt leider keine goldene Faustregel, wie der Webserver einzustellen ist. CPU utilization spielt auch eine eher untergeordnete Rolle, RAM ist ein sehr viel bedeutender Faktor.
                Aus dem Bauch heraus ist MaxClients mit 600 sehr viel zu hoch und SpareServers ebenfalls.

                Google mal nach "Tuning Apache Performance"
                (hier mal drei ganz interessante Links)
                http://www.huschi.net/10_54_de-hochl...ce-tuning.html
                https://www.digitalocean.com/communi...er-performance
                http://www.thomas-krenn.com/de/wiki/...ormance_Tuning
                Wie hoch MaxClients sein darf lässt sich berechnen.

                Aus Top den Wert RES deines httpd = Aktuell belegter Speicherplatz in MB
                Gesamt RAM / RES = Anzahl Prozesse
                -10% für andere Prozesse = MaxClients

                Kommt natürlich immer darauf an was sonst noch auf dem Server läuft. Wie schon erwähnt wurde, eine goldene Regel gibt es nicht. Hier heißt es beobachten, auswerten und anpassen...

                Die hohe CPU Last wird an den MaxSpareServer / MinSpareServer liegen. Diese sollten entsprechend weit auseinander liegen. Ansonsten ist der Apache ständig damit beschäftig Prozesse zu killen oder zu starten und das kostet eben CPU Last.

                Kommentar


                • #9
                  Zitat von blueman1991 Beitrag anzeigen
                  Ich habe das Programm LoadUIWeb im Einsatz. Dieser Simuliert 50 User, die gleichzeitig auf die Startseite zugreifen. Meintest du es so?
                  Ja, das meinte ich. Ich kann mir aber unter 50 Usern viel Vorstellen. Wenn ich dich wörtlich nehmen, mit gleichzeitig, kann das u.U. schon zum Stillstand des Servers führen. Es reicht ein "aufwendinges" Script auf der Startseite und das wars.
                  Ich würde mal auf statischen Content testen mit AB (Apache Benchmark). Das Tool führt ein und den selben Request x mal durch.
                  PHP-Code:
                  ab -n 1000 -c 50 http://www.example.com/static.html 
                  Das wären 1000 Requests, auf 50 Threads verteilt. Evtl. musst du das direkt auf dem Webserver testen, weil das könnte auch durch deine Bandbreite problemeatisch werden. Das erhöst du dann vorsichtig bis der Server anfängt zu lahmen. (z.B. 80% der Request über 1000ms)
                  Dann vergleichst du das mit dynamischen Content. (das würde ich aber nicht mit -c 50 anfangen!) Wenn die differenzen zwischen statisch und dynamischen Content groß sind, dann liegen dein "Performanceprobleme" an deinen Scripten. Da bringen "optimierungen" am Apache recht wenig.

                  Kommentar


                  • #10
                    Wenn die Threads allesamt Rechenzeit verbraten, würde ich ebenfalls darauf tippen, das die Scripte zu lange laufen bzw. zu CPU-lastig sind.
                    Wie ist den das Laufzeitverhalten/Antwortzeiten bei nur einem User, was "macht" deine Seite, muss man da evtl. schon einige Sekunden auf eine Antwort warten?

                    Auffällig ist im Screenshot jedenfalls der Prozeß mit der größten CPU-utilization: kswapd0 (intensives Swapping lässt stark auf Defizite beim RAM schliessen).
                    Deine Webserver belegen im Schnitt 300MB (Size), wovon ca 28MB resident im Speicher liegen. Multipliziert mit der Anzahl an Prozeßen, in Relation zu .. wieviel RAM hat dein Server?
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      Andererseits hast du da wunderbar die Nachteile von PHP als Modul gesehen. Für höhere Serverlasten solltest du auf FCGI oder einen anderen Webserver wie nginx setzen
                      "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                      Kommentar


                      • #12
                        Vielen Dank schon mal für eure Hilfe!

                        @Istegelitzer Server hat 3GB RAM, ich habe schon mal temporär verdoppelt, jedoch zeigte es keine Wirkung.

                        Den Apache Benchmark werde ich nun durchführen und die statischen/dynamischen-Werte vergleichen. Ich habe noch einen Win2008 Server bei server4you, würde es mal darüber probieren.

                        @eagle: An eine Umstellung auf FCGI habe ich auch schon gedacht. Jedoch habe ich damit bislang keine Erfahrung gemacht. Wie kann ich mir eine solche Umstellung vorstellen? Gibt es da Risiken?

                        Grüße

                        Kommentar


                        • #13
                          Zitat von blueman1991 Beitrag anzeigen
                          Der Server hat 3GB RAM, ich habe schon mal temporär verdoppelt, jedoch zeigte es keine Wirkung.
                          Zitat von blueman1991 Beitrag anzeigen
                          CPU: Intel(R) Xeon(R) CPU E5-2690@ 2.90GHz

                          Kommentar


                          • #14
                            Zitat von erc Beitrag anzeigen
                            Ja man könnte behaupten es wäre zu wenig, jedoch ist der RAM bislang nie an seiner Grenze gewesen.

                            Von der CPU steht ihm übrigens 1 Core zur Verfügung.

                            Kommentar


                            • #15
                              Zitat von blueman1991 Beitrag anzeigen
                              Ja man könnte behaupten es wäre zu wenig
                              Für den Prozessor wäre das eine sehr ungewöhnliche kombination gewessen. Hab mich schon beim ersten lesen gewundert wie du ein Server in der Klasse mit "50 Usern" zum stehen bekommst.

                              Kommentar

                              Lädt...
                              X