Optimale Webserver Performance

Googlebug

New Member
Hallo alle zusammen,
die Vorgeschichte:
Ich habe mir einen VServer bei (Achtung jetzt kommt es) STRATO gehostet. Ich wollte da mit einer Webseite vom bisherigen Provider (shared Hosting) auf einen VServer umziehen (da der bisherige Provider keine VServer anbietet) um mehr Power zu haben und vor allem eine eigene IP.
Im Grunde bin ich ja mit der Geschwindigkeit beim alten Provider zufrieden, doch war/bin ich der Meinung, dass man mit einem VServer dann doch noch einiges an Leistung heraus holen kann.

Ich habe also zum Test da gleich mal den größten VServer bei Strato gemietet und zwar den aktuellen V80 mit 1 TB SSD/HDD, 32 GB RAM garantiert, 16 CPU vCores, Plesk Onyx was ja nicht so schlecht klingt.

Also habe ich mich - trotz Warnungen vor Strato- durch gerungen und habe einen VServer bestellt.

Nun habe ich das System installiert bzw. es wurde von Strato installiert. Ich habe mich per Plesk eingeloggt, DB angelegt sowie das komplette Web auf den Server gepackt. Schon beim hochladen der Daten per FTP ist mir aufgefallen, dass dies alles seeeehr langsam geht, habe mir aber gedacht "na evtl. haben die ja ne langsame HDD verbaut" als es dann nu alles fertig war und die Webseite lief habe ich einen Performance Test gemacht.

Zuerst der Upload auf den Server vs shared Hosting
Kopiert habe ich einen Ordner natürlich mit identischen Inhalt. Den Test habe ich freilich mehrmals durch geführt.

VServer: 1,35 Minuten
shared Hosting: 0,25 Sekunden

WOW dachte ich mir, was issn da los?!?

Dann der Test der Ladegeschwindigkeit der Webseite:

Domain bei dem alten Provider wird laut "Google-devTool" die Webseite in zwischen 2- 3 Sekunden geladen

Auf dem VServer dagegen zwischen 4-6 Sekunden.

Da ich nun doch etwas erstaunt darüber war, habe ich mich an den Strato Support gewendet und gefragt habe, wieso der beste aller Starto VServer langsamer ist als eine normal shared Hosting Domain (auf diesem Server liegen immerhin 515 Domains!!! ) ist.


Die Antwort vom Support (sinngemäß): Eigentlich ist da alles Perfekt! Der extrem langsame Upload sagt ja nicht über die Performance des Server aus. Und: "Ich muss Ihnen daher sagen, dass die Ladezeit der Webseite durch eine suboptimale Konfiguration des Webservers, und/oder PHP hervorgerufen wird. Die Administration und Konfiguration der Dienste auf Ihrem Server obliegt Ihnen, daher können wir Ihnen in diesem Fall leider keine weitere Unterstützung anbieten."


Nun ja, Wenn Strato mir einen VServer installiert, kann man da nicht von einer optimalen Konfiguration ausgehen?

Wen ich mir vorstelle ich kaufe ein Auto, fahre damit ganz langsam nach Hause (da es nicht schneller fährt) und fange dann erst einmal an den Fehler zu suchen und das Auto zu tunen, damit ich auf eine Geschwindigkeit wie 99% aller anderen Autos komme. Eventuell erwarte ich da ja zu viel aber irgend wie erscheint mir das etwas falsch zu sein.

Nun zu meiner eigentlichen Frage: Wie mache ich das? Vermutlich über die PHP.ini wo ich auch schon einige Sachen mal getestet habe. Allerdings ohne irgend welche Änderungen in der Performance zu messen. Evtl kann man auch die my.cnf noch verbessern? Die liegt bei dem Server im /etc/ und hat nur recht wenige Einträge.

Kann mir da jemand Tipps geben wie man dem Teil Beine macht?

Vielen Dank!
 
Kann mir da jemand Tipps geben wie man dem Teil Beine macht?
Code:
while true 
do
  Analysieren
  Anpassen
  Monitoren
done

... und das immerwährend, dauernd, für die Lebenszeit des Systems

Ob nun Code, Config- oder sonstige Änderungen sinnvoll sind kann man "einfach so" nicht sagen.

Aber ja - Du hast von Strato einen Server in der Grundaustattung bekommen. Für alle Konfig-Anpassungen und Optimierungen bist Du selbst verantwortlich. Daher wäre evtl. ein Managed-System, bei dem jemand das für Dich übernimmt sinnvoll.
Oftmals sind übrigens Shared-Webhostingsysteme über Jahre hinweg seitens der Anbieter so optimiert, daß ma da mit einem normalen Server nicht an deren Leistung herankommt ...

... das kann auch schon mal ein paar Monate dauern bis inital alles passt, je nach dem wie "normal" dein System ist.

Ein paar Grundlagen z.B. zu DB-Optimerung findest Du hier im Forum - die können, müssen aber nicht grundlegend bei Dir zielführend sein.
 
Und bevor du da jetzt überhaupt das Optimieren beginnst solltest du genau den gleichen Test mal bei einem Provider durchführen der nicht für seine schlechte Performance bekannt ist.

Ich persönlich würde netcup, PHP-Friends oder IP-Projects empfehlen.

Ich kann dir auf die schnelle einen mittleren vServer von netcup bereitstellen auf dem du mal testen kannst!
 
Der angeblich langsame FTP-Upload hat nichts mit der Webserver-Performance zu tun.
Und du bei deinem FTP-Server nicht gesagt
• wie (mit oder ohne SSL)
• wie viel (eine große Datei oder viele kleine)
• mit welchem Datendurchsatz (das kann dein FTP-Programm anzeigen)
du hoch lädst.
 
@Gwen:
Korrekt, so ein Test ist nicht unbedingt direkt aussagekräftig weil er eventuell was anderes misst als man denkt.
Trotzdem denke ich dass es zumindest ein Hinweis sein sollte wenn ein anderes Produkt bei einem anderen Provider hier deutlich schneller ist.

Ob es dann letztendlich das I/O System, die Internetanbindung oder das Wetter über dem Rechenzentrum ist, ist erstmal egal - denke ich :-)
 
Mein Proftp über SSL auf einem Hetzner-vServer macht einen Durchsatz von bei großen Dateien 1,2 MByte/s, bei kleinen 12 kByte/s über meinen Telekom-VDSL.

Die hier fragende Person sollte erst mal den eigenen Server einrichten oder sich jemand mit Fachkenntnis zum Überprüfen suchen. Erst dann kann man beim Server-Anbieter reklamieren, so nach Gefühl zu testen ist nichts was der Anbieter als Reklamation/Serviceauftrag ernst nehmen kann.
 
Last edited by a moderator:
Mein Proftp über SSL auf einem Hetzner-vServer macht einen Durchsatz von bei großen Dateien 1,2 MByte/s, bei kleinen 12 kByte/s über meinen Telekom-VDSL.

Die hier fragende Person sollte erst mal den eigenen Server einrichten oder sich jemand mit Fachkenntnis zum Überprüfen suchen. Erst dann kann man beim Server-Anbieter reklamieren, so nach Gefühl zu testen ist nichts was der Anbieter als Reklamation/Serviceauftrag ernst nehmen kann.

Wenn ich exakt den gleichen Datensatz auf 2 unterschiedliche Server hochlade, sollte man da nicht einen Vergleich ziehen können?
 
Der angeblich langsame FTP-Upload hat nichts mit der Webserver-Performance zu tun.
Und du bei deinem FTP-Server nicht gesagt
• wie (mit oder ohne SSL)
• wie viel (eine große Datei oder viele kleine)
• mit welchem Datendurchsatz (das kann dein FTP-Programm anzeigen)
du hoch lädst.


Ich habe mit exakt den gleiche FTP Einstellung, exakt die gleiche Datei auf 2 unterschiedlich Server hochgeladen (nacheinander). Da mein Internetanschluss ja auch der gleich ist, sollte man da nicht einen Vergleich ziehen können?
 
Code:
while true 
Für alle Konfig-Anpassungen und Optimierungen bist Du selbst verantwortlich.[/QUOTE]

Generell ist mir klar das ich für Änderungen an der Server-Konfig selbst verantwortlich bin. Darum ging es mir auch nicht! Die Frage ist: Kann ich von einem vorinstallierten VServer einen optimale Performance erwarten oder nicht?
 
Und bevor du da jetzt überhaupt das Optimieren beginnst solltest du genau den gleichen Test mal bei einem Provider durchführen der nicht für seine schlechte Performance bekannt ist.

Ich persönlich würde netcup, PHP-Friends oder IP-Projects empfehlen.

Ich kann dir auf die schnelle einen mittleren vServer von netcup bereitstellen auf dem du mal testen kannst!

Das wäre ja mal ein Test wert!
 
Bevor du PHP Testes würde ich die eigentliche CPU Performance und auch Festplatten Performance überprüfen. RAM kannst du gerne ebenfalls machen. Ansonsten ist ein SpeedTest nicht verkehrt. Dann hast du zunindestens schonmal die rohen Leistungsdaten deines Servers. Du hast wie gesagt einen vServer und du bekommst nicht zu 100% sämtliche Ressourcen zugesichert.
Ich würde von Strato abraten hatte dort einige Kunden mit einem vServer und die könnten die angegebene Leistung egal ob CPU,RAM oder Festplatte nicht nutzen. Du zahlst ja schon relative viel für deinen Server für sehr sehr viel Leistung, ich kann jedoch aus Erfahrung sagen das diese Leistung meistens garnicht benötigt wird sondern ein vServer mit viel weniger Leistung bei einem anderen Anbieter würde das besser hinbekommen weil dort die Leistung eher garantieret ist, würdest dann natürlich auch etwas mehr für diese Leistung zahlen.

Um es kurz zu machen, rohe Rechenleistung prüfen ob diese in Ordnung sind, wenn ja dann haben die meisten Websiete System eine Debugg Tool mit den du die Zeit messen kannst die php braucht.
Sollte das in Ordnung sein, das heißt die Berechnung/Erzeugung der Webseite geht in etwa 200-400ms dann vielleicht von Apache auf Nginx wechseln und ggfs. die PHP Version auf eine neuere wechseln.
Sollte das alles gut sein, dann liegt es an der Anbindung des Servers das diese nicht mehr ausreicht :)

Edit:
Hatte öfters das Problem das die Zeit zum Verbinden z.b. per SSH sehr lange braucht ist das bei dir auch der Fall?
Und hast du öfters das Problem wenn du mit SSH angemeldet bist, das es sehr lange braucht bis dies was du getippt hast da steht?
 
Last edited by a moderator:
Bevor du PHP Testes würde ich die eigentliche CPU Performance und auch Festplatten Performance überprüfen. RAM kannst du gerne ebenfalls machen. Ansonsten ist ein SpeedTest nicht verkehrt. Dann hast du zunindestens schonmal die rohen Leistungsdaten deines Servers. Du hast wie gesagt einen vServer und du bekommst nicht zu 100% sämtliche Ressourcen zugesichert.
Ich würde von Strato abraten hatte dort einige Kunden mit einem vServer und die könnten die angegebene Leistung egal ob CPU,RAM oder Festplatte nicht nutzen. Du zahlst ja schon relative viel für deinen Server für sehr sehr viel Leistung, ich kann jedoch aus Erfahrung sagen das diese Leistung meistens garnicht benötigt wird sondern ein vServer mit viel weniger Leistung bei einem anderen Anbieter würde das besser hinbekommen weil dort die Leistung eher garantieret ist, würdest dann natürlich auch etwas mehr für diese Leistung zahlen.

Um es kurz zu machen, rohe Rechenleistung prüfen ob diese in Ordnung sind, wenn ja dann haben die meisten Websiete System eine Debugg Tool mit den du die Zeit messen kannst die php braucht.
Sollte das in Ordnung sein, das heißt die Berechnung/Erzeugung der Webseite geht in etwa 200-400ms dann vielleicht von Apache auf Nginx wechseln und ggfs. die PHP Version auf eine neuere wechseln.
Sollte das alles gut sein, dann liegt es an der Anbindung des Servers das diese nicht mehr ausreicht :)

Wie kann man denn die CPU,RAM & HDD Leistung auf einem VServer testen? PHP 7 ist installiert und läuft. Am PHP Code kann ich nicht viel ändern, da es ein Online Shop ist. Mit Nginx habe ich es versucht aber da gibt es wohl einige Probs mit der htaccess. Die Startseite des Shop läuft unter Nginx, bringt aber auch keine schnellere Ladezeiten der Webseite. Wie gesagt, der Shop liegt auch auf einem normalen shared Hosting Provider mit 515 fremden Domains und läuft schneller als auf dem besten Strato VServer. Ich dachte das man evtl. die PHP.ini oder ähnliches etwas tunen kann.
 
Zum allerersten leichten Vergleich, nimm mal das PHP Script hier:
http://www.php-benchmark-script.com/

Und poste mal die Werte. Ich kann ein paar Vergleichswerte liefern.
Ich würde behaupten dass das Script hauptsächlich CPU testet da es verschiedenste PHP Funktionen aufruft.

Und falls du einen Server willst schreib mir ne PN...
Hier die Images von netcup: https://www.netcup.de/vserver/vserver_images.php
Zur Verfügung hab ich einen RS 1000 G7 SE, 2 dedicated cores (Intel® Xeon® E5-2680V4), 6 GB Ram DDR4 ECC, 40 GB SSD RAID10, 1 GBit/s, 99,9% Mindestverfügbarkeit
 
Natürlich kann man an der php.ini schrauben aber das Problem erkennst Du ja schon selbst: was, wie, wo, warum ist völlig unklar, weil man für vernünftige Entscheidungen vor allen Dingen Daten braucht.
Zum Benchmarken der HDD kann man z.B. hdparm -tT nehmen, für das Benchen der CPU gibt es z.B. sysbench.

Beispiel für hdparm auf einer Virtualbox vm:
Code:
alex@UbuntuVB:~$ sudo hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   20816 MB in  2.00 seconds = 10419.00 MB/sec
 Timing buffered disk reads: 1676 MB in  3.01 seconds = 556.58 MB/sec

Der zweite Wert ist hier relevant, da er etwas über die Geschwindigkeit des Storages aussagt, hier z.B. eine einzelne SSD, ohne Raid oder ähnliches (wie gesagt, eine VM).

Sysbench Beispiel, mit einem einzelnen Kern (auch in einer VM), Test der CPU:
Code:
alex@UbuntuVB:~$ sysbench --threads=1 cpu run
[...]
CPU speed:
    events per second:  1524.57

General statistics:
    total time:                          10.0006s
    total number of events:              15249

Latency (ms):
         min:                                  0.55
         avg:                                  0.66
         max:                                  1.53
         95th percentile:                      0.70
         sum:                               9992.90

Je höher die Latenz, desto schlechter.

Und zu guter Letzt für den RAM:
Code:
sysbench --threads=1 memory run
[...]
Running memory speed test with the following options:
  block size: 1KiB
  total size: 102400MiB
  operation: write
  scope: global

Initializing worker threads...

Threads started!

Total operations: 35238777 (3523405.49 per second)

34412.87 MiB transferred (3440.83 MiB/sec)


General statistics:
    total time:                          10.0001s
    total number of events:              35238777

Latency (ms):
         min:                                  0.00
         avg:                                  0.00
         max:                                  0.22
         95th percentile:                      0.00
         sum:                               4169.94

Threads fairness:
    events (avg/stddev):           35238777.0000/0.00
    execution time (avg/stddev):   4.1699/0.00

Auch hier gilt: eine niedrige Latenz ist wichtig, gleichzeitig ist die Transferrate wichtig.

Zuletzt aber eine Warnung: das sind synthetische Benchmarks und mit unterschiedlichen Einstellungen wird man auch hier unterschiedliche Resultate erzielen. Dennoch geben sie einen ersten Einblick, falls etwas grundsätzlich schief läuft (z.B. extrem hohe Latenzen bei der CPU oder extrem niedrige Transferraten beim RAM).

Auch gibt es noch viele andere Methoden um solche Metriken zu erhalten, die dann auch völlig anders zu interpretieren sind (dd ist z.B. auch eine Möglichkeit, um das Storage zu testen). Auch kannst Du Deine Ergebnisse nicht direkt mit meinen vergleichen, da diese auf einer VM liefen, welcher nur ein Kern zugewiesen war und nebenbei liefen noch sehr viele Prozesse auf dem Host. Auch vergleichen wir hier zwangsläufig verschiedene Virtualisierungslösungen.
Am Besten vergleichst Du daher mit ähnlich ausgestatteten vServern anderer Anbieter.
 
Last edited by a moderator:
Wie kann man denn die CPU,RAM & HDD Leistung auf einem VServer testen? PHP 7 ist installiert und läuft. Am PHP Code kann ich nicht viel ändern, da es ein Online Shop ist. Mit Nginx habe ich es versucht aber da gibt es wohl einige Probs mit der htaccess. Die Startseite des Shop läuft unter Nginx, bringt aber auch keine schnellere Ladezeiten der Webseite. Wie gesagt, der Shop liegt auch auf einem normalen shared Hosting Provider mit 515 fremden Domains und läuft schneller als auf dem besten Strato VServer. Ich dachte das man evtl. die PHP.ini oder ähnliches etwas tunen kann.
Hier ist ein gutes Tutorial bei dem alles erklärtest.
https://www.thomaschristlieb.de/benchmark-der-vserver-bei-php-friends/
 
THX, habe die Test mal auf beiden zum Vergleich gemacht und scheinbar ist der VServer (nach diesem Vergleich) dann irgend wie deutlich schneller:

Start : 2017-11-22 16:40:25
Server : VServer
PHP version : 7.0.25
Platform : Linux
--------------------------------------
test_ifelse : 0.188 sec.
test_loops : 0.256 sec.
test_stringmanipulation : 0.382 sec.
test_math : 0.264 sec.
--------------------------------------
Total time: : 1.09 sec.


Start : 2017-11-22 16:40:17
Server : shared Hosting:
PHP version : 5.6.30-nmm1
Platform : Linux
--------------------------------------
test_math : 0.693 sec.
test_stringmanipulation : 0.691 sec.
test_loops : 0.529 sec.
test_ifelse : 0.335 sec.
--------------------------------------
Total time: : 2.248 sec
 
THX, habe die Test mal auf beiden zum Vergleich gemacht und scheinbar ist der VServer (nach diesem Vergleich) dann irgend wie deutlich schneller:

Start : 2017-11-22 16:40:25
Server : VServer
PHP version : 7.0.25
Platform : Linux
--------------------------------------
test_ifelse : 0.188 sec.
test_loops : 0.256 sec.
test_stringmanipulation : 0.382 sec.
test_math : 0.264 sec.
--------------------------------------
Total time: : 1.09 sec.


Start : 2017-11-22 16:40:17
Server : shared Hosting:
PHP version : 5.6.30-nmm1
Platform : Linux
--------------------------------------
test_math : 0.693 sec.
test_stringmanipulation : 0.691 sec.
test_loops : 0.529 sec.
test_ifelse : 0.335 sec.
--------------------------------------
Total time: : 2.248 sec
Die php Performance sieht gut aus. Aber ein Benchmark von den einzelnen Komponenten wäre denke ich auch sehr hilfreich zu sehen. Weil die PHP Performance hängt nicht zu 100% von der Rechenleistung ab.
 
Korrekt, das sind Shellbefehle. Wie gesagt, unterschiedliche Parameter können hier sehr viel beeinflussen. Das von mir sind nur Beispiele mit den Defaulteinstellungen.
 
Back
Top