Schlechte Performance seit Umstieg auf Lighthttp

  • Servus zusammen,

    leider ist die Performance mit Lighthttp deutlich schlechter als mit Apache. Das äußert sich insbesondere,

    wenn ich über Buttons und Websockets, Werte in eine DB schreibe und dann aktualisiere gönnt sich der Webserver teils

    ein paar "Gedenksekunden" was ich bei einer schnellen Umschaltung zwischen Menüs nicht wirklich gebrauchen kann...

    Kann man die Vorgänge ggf. noch anderweitig beschleunigen?

    Mit Apache hats bestens geklappt, dachte ich könnte noch mehr Speed rausholen mit Lighthttp.

    Es wird meistens nur 1 Client bedient, höchstens 5.


    Ansonsten würde mich interessieren, ob ich den Server einfach mit:

    Code
    sudo apt-get remove lighttpd


    deinstallieren kann, und anschließend Apache mit

    Code
    sudo apt-get install apache2

    installiern kann.

    Muss hierbei noch etwas beachtet werden?

    Möchte ungern alles neu aufsetzen wenns nicht sein muss...

    Achja es wird MariaDB, PHP7 auf Rasbian Stretch Lite verwendet

  • sieht gut aus würd ich sagen...

  • Hallo,

    ChrisChip: IMHO ist aber auch nicht der Request/Response Zyklus der Servers die "Bremse" sein, sondern a) die DB-Zugriffe und b) ggf. die Laufzeit des PHP-Codes. Eventuell spielt es noch eine Rolle, wie Apache bzw. Lighthttp den PHP-Code ausführen bzw. an den PHP-Interpreter durchreichen. Aber in dem Gebiet kenne ich mich nicht wirklich aus, weil ich kein PHP nutze.

    Hast du eigentlich wirklich ein Performance-Problem oder optimierst du "just for fun"? Wenn du wirklich ein Performance-Problem hast, würde ich denke ich eher an der DB ansetzen und schauen, ob du da irgendwelche slow-queries oder unnötig komplizierte Abfragen hast.

    Gruß, noisefloor

  • Hallo nochmal,

    würde sagen eher Just for fun... Da es sich um eine Benutzeroberfläche handelt, soll diese halt so flüssig wie möglich auf die Bedienung reagieren.

    Ich hab es nicht gern, wenn sich die Steuerung einen "Gedenkmoment" gönnt ;)

    DB- Zugriffe bin ich schon dabei zu optimieren...

    Nginx bin ich noch nicht dazugekommen zum testen.

    Mach das meiste mit PHP, auch die Hardware Ansteuerung mit shell_exec() :stumm:

    Wär vielleicht zu überlegen I2C Ansteuerung und GPIO über eine andere Programmiersprache wie Python oder C zu machen. Würde dies noch was an Geschwindigkeit bringen?

  • Achja, meine Stärken liegen auch eher in C++.

    Aber Programmänderungen in PHP sind halt super easy... Notepad++ über FTP verbinden, Datei ändern, fertig...

    In C muss erst immer compiliert werden, was ich über die Konole schon recht umständlich finde insbesondere bei mehreren Include Dateien

    und DB- Zugriffen usw.

    Vielleicht wäre der "goldene Weg" auch die Kombination von PHP mit Phyton, aber da bin ich leider absoluter Anfänger :X

  • Hallo,

    Zitat

    Da es sich um eine Benutzeroberfläche handelt, soll diese halt so flüssig wie möglich auf die Bedienung reagieren.

    Auf die Netzwerklatenz hast du aber (auch) keinen Einfluss. Solange du nicht weiß, warum es manchmal träge ist, ist Optimierung IMHO so wie so fehl am Platz.

    Wenn du mit z.B. Python entwickelt würdest, dann würde schon mal Apache oder lighthttp wegfallen, weil du keinen (richtigen) Webserver mehr brauchst. Bleibt aber trotzdem die Frage, ob's was bringt und ob du den zeitlichen Aufwand betreiben willst, einen Re-Write in Python zu machen.

    Gruß, noisefloor

  • Auf keinen Fall. Ziel sollte Immer sein, nicht aus einer Sprache heraus Skripte/Programme einer anderen Sprache zu starten.

    Es geht halt hauptsächlich um Sachen die PHP nicht direkt unterstützt, wie die GPIO oder I2C.

    Dachte immer, es wäre sehr schlecht programmiert mit shell_exec() über die Konsole GPIO's anzusteuern ala´

    Code
    //GPIO Digital IN
        $input[1]    =     exec('cat /sys/class/gpio/gpio22/value');
    
    //GPIO Digital OUT
        shell_exec('echo "'.output[1].'" > /sys/class/gpio/gpio26/value');
    
    //I2C Analog OUT
        exec('i2cset -y 1 0x58 0x00 '.output[10].' w');

    Gibts da keine bessere Möglichkeit? :/

    Hallo,

    Auf die Netzwerklatenz hast du aber (auch) keinen Einfluss. Solange du nicht weiß, warum es manchmal träge ist, ist Optimierung IMHO so wie so fehl am Platz.

    Wenn du mit z.B. Python entwickelt würdest, dann würde schon mal Apache oder lighthttp wegfallen, weil du keinen (richtigen) Webserver mehr brauchst. Bleibt aber trotzdem die Frage, ob's was bringt und ob du den zeitlichen Aufwand betreiben willst, einen Re-Write in Python zu machen.

    Gruß, noisefloor

    Über einen Re-Write in Python habe ich auch schon nachgedacht, kommt aber eher nicht in Frage.

    Habe jedoch unabhängige Skripte laufen, die z.B. Werte aus Sensoren auslesen und in eine DB schreiben. Bisher mache ich das in PHP.

    Denke, das würde sich durchaus in Python eleganter lösen lassen. Da ja PHP eigentlich nicht direkt für Serverseitige, dauerhaft laufende Skripte gedacht ist oder sehe ich das falsch?

  • Gibts da keine bessere Möglichkeit? :/

    Direkt Python verwenden ;)

    Naja, die Verwendung des Sysfs ist schon mal besser als irgendwelche Python-Skripte aus PHP heraus aufzurufen.

    Denke, das würde sich durchaus in Python eleganter lösen lassen. Da ja PHP eigentlich nicht direkt für Serverseitige, dauerhaft laufende Skripte gedacht ist oder sehe ich das falsch?

    Ja, PHP ist in der Tat keine Programmiersprache, die man für eine dauerhaft (serverseitig) laufende Webanwendung verwenden würde. Da nimmt man eher Python, Ruby oder Go. Laut Wikipedia steht PHP auch für "Hypertext Preprocessor", das kann es gut: anstatt statisches HTML vom Server zu liefern wird zwischen Anfrage und Antwort der PHP-Interpreter mit der Ausführung eines PHP-Skripts beauftragt, womit dynamische Seiten (z.B. Datenbankinhalte) erstellt werden können, es wird HTML generiert, aber es gibt keine länger laufenden Threads.

    PS: Bitte Doppelposts vermeiden, :danke_ATDE:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!