PAtrick: Was ist weniger CPU belastend CGI, Php usw..

Hallo

Ich habe einen halben Server und lasse darauf zur Zeit einige Perl skripte laufen, doch die Belastung der CPU liegt durchschnittlich über 20 Sekunden hin weg bei teilweise mehr als 85%. (100 zugriffe gleichzeitig usw. Viele MYSQL-Datenbank Zugriffe).

Nun wollte ich fragen:

Was ist besser (oder weniger belastend) für den Server? Das gleiche Skript in:

-PHP
-SHTML (und dann event. Zugriff auf cgi-Skript)
-CGI/Perl
-SpeedyCGI
-mod_perl

Legen wir mal 2 Skripte zu grunde:

1. Es muss nur der Aktuelle Tag des Monats dynamsisch ausgegeben werden.
2. Es muss eine komplette Seite eines internen Postsystems mit einigen Berechnungen, Datenbank zugriffen usw. erzeugt werden.

Bitte sagen sie mir welche der obengenannten Dinge besser geeignet sind, also für 1. und dann noch für 2., dafür (am besten in einer Rangliste). Bei ziemlich vielen Zugriffen gleichzeitig.

Patrick Müller

  1. Hallo,

    Ich habe einen halben Server und lasse darauf zur Zeit einige Perl skripte laufen, doch die Belastung der CPU liegt durchschnittlich über 20 Sekunden hin weg bei teilweise mehr als 85%. (100 zugriffe gleichzeitig usw. Viele MYSQL-Datenbank Zugriffe).

    Nun wollte ich fragen:

    Was ist besser (oder weniger belastend) für den Server? Das gleiche Skript in:

    -PHP
    -SHTML (und dann event. Zugriff auf cgi-Skript)
    -CGI/Perl
    -SpeedyCGI
    -mod_perl

    Sofern du nicht bis auf die Millisekunde ausmessen möchtest, was schneller ist, kann ich nur anmerken, dass es  grundsätzlich völlig egal ist, welche _Sprache_ am besten geeignet ist, sondern es auf den Algorithmus ankommt. PHP und Perl, sowie natürlich C(++) über CGI sind turing-complette und können damit alle deine Aufgaben lösen, es kommt halt darauf an, welche Umsetzung in der jeweiligen Sprache am besten ist, und das ist erfahrungsgemäß die Variante der Sprache mit der du am besten klar kommst.

    Erfahrungsgemäß ist C sauschnell, aber halt nicht unbedingt so "simpel" wie PHP. Grundsätzlich ist noch zu sagen, dass PHP und Perl als Modul eingebunden deutlich schneller laufen, als über CGI.

    Insgesamt gilt aber, dass du am besten die Sprache nimmst, die dir am meisten liegt.

    Grüße aus Barsinghausen,
    Fabian

    1. Hello,

      Erfahrungsgemäß ist C sauschnell, aber halt nicht unbedingt so "simpel" wie PHP. Grundsätzlich ist noch zu sagen, dass PHP und Perl als Modul eingebunden deutlich schneller laufen, als über CGI.

      Insgesamt gilt aber, dass du am besten die Sprache nimmst, die dir am meisten liegt.

      Naja, Ihr "Nachwuchskünstler". Da komm ich doch gleich wieder mit meinen Fragen:

      • Wieviele Medienzugriffe (Festplatte, CD-ROM, ZIP-Drive) etc.
          muss denn die Applikation machen?

      • Wieviele Port-Reads und -Sends kommen vor und wie ist das Timeout-Schema?

      • Wieviele Socket-Anwendugnen sind vorhanden und Wie ist hier das Timeout?

      • usw.

      Man kann mit PHP schnell Programmieren und auch bummelig. Wenn ich z.B. 100.000 Zeichen ausgebewn lasse und in einer Schleife den Zähler immer brav um 1 erhöhe, dann dauert das sehr viel länger, als wenn ich immer 100 Zeichen auf einmal ausgebe...

      Das gleiche könnt Ihr ja mal mit dem Lesen oder Schreiben in Dateien versuchen.

      100.000 Zeichen in einen Buffer geschreiben und dann in die Datei ausgegeben geht ratzfatz und das gleiche mit 100.000 mal ein Zeichen in eine Datei... da könnte ich glatt wieder anfangen zu rauchen.

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  2. Hallo,

    Ich habe einen halben Server und lasse darauf zur Zeit einige Perl skripte laufen, doch die Belastung der CPU liegt durchschnittlich über 20 Sekunden hin weg bei teilweise mehr als 85%. (100 zugriffe gleichzeitig usw. Viele MYSQL-Datenbank Zugriffe).

    Ich habe einen Server, der gleichzeitig fast 0 Zugriffe hat, und unausgelastet 66% CPU verbrauch hat ....!

    Was ist besser (oder weniger belastend) für den Server? Das gleiche Skript in:

    -PHP

    mein absoluter Favorit. Ziemlich mächtig, und über API eingebunden am wenigsten Ressourcenfressend.

    -SHTML (und dann event. Zugriff auf cgi-Skript)

    shtml ist natürlich am wenigsten belastend, da Apache es selbst erledigt, und kein programm eingebunden wird. der zugriff auf cgi-script über shtml: schlecht.

    -CGI/Perl
    -SpeedyCGI

    Als Cgi eingebunden ist es ziemlich schlecht - da er jedes mal das Programm aufrufen muss. Siehe PHP.

    Legen wir mal 2 Skripte zu grunde:

    1. Es muss nur der Aktuelle Tag des Monats dynamsisch ausgegeben werden.

    hahaha. das schaffen auch billigste shtmls.

    1. Es muss eine komplette Seite eines internen Postsystems mit einigen Berechnungen, Datenbank zugriffen usw. erzeugt werden.

    PHP als APi - mein favorit.

    Kinast

    An alle interressierten: Die Kinast Hacking and Cracking Utulitils
      liegen bald in Version 5.1.3.4 vor! Unbedingt jetzt schon vor-
      bestellen zum unverbindlichen sonderbezugspreis von 5900 Euro !
      http://www.kinast.de/khu/new/5/1/3/4/vorbestellung/
      (Hinweis: Unautorisierte IP-Adressen erhalten keinen Zugriff ab
      http://www.kinast.de/khu/!)

    1. Hallo,

      Ich habe einen Server, der gleichzeitig fast 0 Zugriffe hat, und unausgelastet 66% CPU verbrauch hat ....!

      Ui, da hat der ja mindestens 2 MHz... ansonsten machst du eindeutig was falsch.

      Was ist besser (oder weniger belastend) für den Server? Das gleiche Skript in:

      -PHP
      mein absoluter Favorit. Ziemlich mächtig, und über API eingebunden am wenigsten Ressourcenfressend.

      Seh' ich nicht so. PHP ist normalerweise sehr viel ressourcenfressender als ein sauberes kleines C-Prog. Und Perl ist normalerweise auch besser.

      1. Es muss eine komplette Seite eines internen Postsystems mit einigen Berechnungen, Datenbank zugriffen usw. erzeugt werden.
        PHP als APi - mein favorit.

      C. Allerdings nicht gerade easy.

      An alle interressierten: Die Kinast Hacking and Cracking Utulitils
        liegen bald in Version 5.1.3.4 vor! Unbedingt jetzt schon vor-
        bestellen zum unverbindlichen sonderbezugspreis von 5900 Euro !
        http://www.kinast.de/khu/new/5/1/3/4/vorbestellung/
        (Hinweis: Unautorisierte IP-Adressen erhalten keinen Zugriff ab
        http://www.kinast.de/khu/!)

      Was soll der Scheiß?

      Grüße aus Barsinghausen,
      Fabian

      1. Hallo,

        Ich habe einen Server, der gleichzeitig fast 0 Zugriffe hat, und unausgelastet 66% CPU verbrauch hat ....!

        Ui, da hat der ja mindestens 2 MHz... ansonsten machst du eindeutig was falsch.

        ~666Mhz habe ich. Standartmäßig sind von meinen 256MB Ram nahezu 160 belegt - im ruhezustand.
        Hinzuzugügen ist, dass mein Win2k-Computer eigentlich ein - wie man sie so schön nennt - "Desktop-Computer" ist, also kein Server 8]

        -PHP
        mein absoluter Favorit. Ziemlich mächtig, und über API eingebunden am wenigsten Ressourcenfressend.

        Seh' ich nicht so. PHP ist normalerweise sehr viel ressourcenfressender als ein sauberes kleines C-Prog. Und Perl ist normalerweise auch besser.

        lustig lustig. Ich werde mir _kein_ C-Programm programmieren, nur um die aktuelle Uhrzeit auszugeben ...

        PHP als APi - mein favorit.
        C. Allerdings nicht gerade easy.

        Der nachteil an C ist ja wohl auch, dass du dann deinen Sourcecode immer kompilieren musst bevor du ihn einsetzten kannst - fehlerbehebung wahnsinnig umständlich.

        An alle interressierten: Die Kinast Hacking and Cracking Utulitils
          liegen bald in Version 5.1.3.4 vor! Unbedingt jetzt schon vor-
          bestellen zum unverbindlichen sonderbezugspreis von 5900 Euro !
          http://www.kinast.de/khu/new/5/1/3/4/vorbestellung/
          (Hinweis: Unautorisierte IP-Adressen erhalten keinen Zugriff ab
          http://www.kinast.de/khu/!)

        Was soll der Scheiß?

        Es ist kein Scheiß. Ich bin zwar nicht persönlich der Entwickler der Tools, aber man sagte mir, ich soll sie unters Volk bringen.

        Kinast

        1. Hi!

          ~666Mhz habe ich. Standartmäßig sind von meinen 256MB Ram nahezu 160 belegt - im ruhezustand.

          Du kennst aber schon den Unterschied zwischen CPU und Arbeitsspeicher? ;-)

          Grüße
          Andreas

          1. Hallo,

            ~666Mhz habe ich. Standartmäßig sind von meinen 256MB Ram nahezu 160 belegt - im ruhezustand.

            Du kennst aber schon den Unterschied zwischen CPU und Arbeitsspeicher? ;-)

            jep, schuldigung, habe mich hier gerade vertan. Bei mir habe ich im Moment im Vordergrund nur Opera laufen, und habe CPU-Verbrauch 2-8%, 6500 Handles, 556 Threads, 32 Prozesse und lediglich 68MB freien Ram :-/

            Kinast

            1. Hi!

              ~666Mhz habe ich. Standartmäßig sind von meinen 256MB Ram nahezu 160 belegt - im ruhezustand.

              Du kennst aber schon den Unterschied zwischen CPU und Arbeitsspeicher? ;-)

              jep, schuldigung, habe mich hier gerade vertan. Bei mir habe ich im Moment im Vordergrund nur Opera laufen, und habe CPU-Verbrauch 2-8%, 6500 Handles, 556 Threads, 32 Prozesse und lediglich 68MB freien Ram :-/

              Ja, das hört sich schon "normaler" an ;-)

              Grüße
              Andreas

              1. Hi!

                ~666Mhz habe ich. Standartmäßig sind von meinen 256MB Ram nahezu 160 belegt - im ruhezustand.

                Du kennst aber schon den Unterschied zwischen CPU und Arbeitsspeicher? ;-)

                jep, schuldigung, habe mich hier gerade vertan. Bei mir habe ich im Moment im Vordergrund nur Opera laufen, und habe CPU-Verbrauch 2-8%, 6500 Handles, 556 Threads, 32 Prozesse und lediglich 68MB freien Ram :-/

                Ja, das hört sich schon "normaler" an ;-)

                Wieso meint Tom dann, ich hätte einen Virus ([pref:t=70702&m=406858]) =????

                Kinast

            2. Hello,

              jep, schuldigung, habe mich hier gerade vertan. Bei mir habe ich im Moment im Vordergrund nur Opera laufen, und habe CPU-Verbrauch 2-8%, 6500 Handles, 556 Threads, 32 Prozesse und lediglich 68MB freien Ram :-/

              Wozu um Himmels Willen braucht man auf einem Desktop-Computer 6500 Handles gleichzeitig? Was für ein Virus läuft da gerade bei Dir?

              Liebe Grüße aus http://www.braunschweig.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              1. Hallo,

                jep, schuldigung, habe mich hier gerade vertan. Bei mir habe ich im Moment im Vordergrund nur Opera laufen, und habe CPU-Verbrauch 2-8%, 6500 Handles, 556 Threads, 32 Prozesse und lediglich 68MB freien Ram :-/

                Wozu um Himmels Willen braucht man auf einem Desktop-Computer 6500 Handles gleichzeitig? Was für ein Virus läuft da gerade bei Dir?

                jo, jetzt sind es 6690 ;-)
                Ehm, wie gesagt, bei mir laufen halt Apache, PHP als API, IIS-FTP-Server, die ganzen Win2k-Dienste, 3 Server-Überwachungstools, eine Firewall - und gerade ein Opera ;-)

                Wieso virus?

                Kinast

    2. Hello,

      was macht Ihr mit euren Servern eigentlich?

      Im Inhouse-Server komme ich selten über 22%, gaaaanz kurze Spitzen ausgenommen. Und bei meinem Provider darf ich auch gucken, der hat in Zeiten, wenn meine Mitnutzer scheinbar Serienmail fahren, gerade 55% Last auf dem vServer. Wenn ich dann meine Datenbank mal Blindtraffic machen lasse, steigt das vielleicht auf 56.5%

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  3. aus eigener erfahrung: php und perl NUR als modul. servererweiterungen als executables eingebunden zwingen jede hardware in die knie, sobald du mehr als ein paar besucher pro tag hast.
    bytheway: ich habe bis jetzt noch keine funktionierende anleitung gefunden, wie man unter iis6 php als isapi-modul einbindet. und zwar so, dass php auch sämtliche extensions lädt. sollte das irgendwann mal funktionieren, werde ich glatt vom glauben abfallen, meine linux-apache-kombination in die tonne schmeissen und zum microsoft-jünger werden. das ist mein ernst, ich bin vom iis6 unter win2003 echt begeistert. wenns denn nur mit php funktionieren würde...

    gruss aus berlin, volker

  4. use Mosche;

    Was ist besser (oder weniger belastend) für den Server? Das gleiche Skript in:

    -PHP
    -SHTML (und dann event. Zugriff auf cgi-Skript)
    -CGI/Perl
    -SpeedyCGI
    -mod_perl

    Das Problem bei Script-Sprachen ist immer, dass diese immer zuerst interpretiert oder kompiliert werden müssen. Deshalb wäre es bei wirklich Performance-lastigen Sachen ratsam, dass ganze bereits vor dem eigentlichen Request in einer kompilierten Form vorhanden zu haben. Möglichkeit wäre da zB ein kompiliertes Programm in C/C++ oder ähnlichem, wenn man aber bereits ein Programm hat, kann man das ganze sehr schnell mit mod_perl "vorladen" lassen. Das setzt aber einen gewissen Aufbau deines Scriptes voraus - es muß wesentlich sauberer geschrieben sein (strict ist bei mod_perl Standard).

    Bei deinen Alternativen würde ich also a.o.g.G. mod_perl empfehlen.

    Was sich aber auf jeden Fall empfehlen lässt: den Apache kann man selbst noch stark tunen.
    Hier empfehle ich mal einen Beitrag aus dem Linux Magazin von einem C.Kruse (kennt den hier vielleicht irgendwer? :-)) http://www.linux-magazin.de/Artikel/ausgabe/2004/01, leider nicht online verfügbar.

    use Tschoe qw(Matti);

    --
      Anyone who quotes me in their sig is an idiot. -- Rusty Russell.