Zum Inhalt springen

WebServer - Performanceprobleme


Empfohlene Beiträge

Hallo Leute,

bin neu hier, diese Seite hat mich schon oft gerettet und nun habe ich mich auch endlich angemeldet, um selbst Rat von euch zu bekommen und mich auszutauschen.

Ich habe die Aufgabe erhalten,mich um die Performanceprobleme unserer Hosted-Studio-Umgebung zu kümmern, in der wir für einen unserer Kunden ein Portal hosten. Ich soll das Problem analysieren und mich um eine Lösung kümmern. Es handelt sich um einen WinServer 2008 R2. Das Produktivsystem um das es geht wurde zu Testzwecken nachgebaut und gespiegelt, ich kann also auch drann rumspielen, ohne dass die Produktivität leidet :P

Vorweg, mein Wissen bzgl. WebServern ist sehr begrenzt, bin Fisi im 2. Lehrjahr.

Nun zu meinem Problem:

Ich weiß momentan noch nicht aus welchem Grund es zu diesen Problemen kommt (mangelnde Hardware, fehlerhafte Konfiguration, etc..) - es kommt teilweise zu wirklich sehr langen Ladezeiten.

Nun habe ich nach Tools gesucht um den WebServer unter Stress zu setzen und die Systemauslastung zu überwachen. Bis jetzt habe ich aber nur Tools gefunden mit den ich HTTP-Requests erzeugen kann, klappt soweit auch ganz gut. Jetzt weiß ich aber immernoch nicht ob die Hardware der Grund für die Langen Ladezeiten ist, oder ob es eine andere Komponente ist, die das ganze ausbremst. Klar könnte ich jetzt einfach mehr Speicher oder einen schnelleren Prozessor reinbauen und schauen ob sich die Durchsatzrate, Zugriffszeit etc.. verbessert hat. Vlt aber exisitiert ja irgendein Analyse-Tool welches mir genau die Informationen liefert nach denen ich suche - eine Art Benchmark, welcher die jeweiligen Gesichtspunkte überprüft, die für die Geschwindigkeit eines WebServers verantwortlich sind (Netzwerkanbindung, Prozessorleistung, Speicherkapazität, Konfiguration, Festplatten, laufende Prozesse, blablabla...)

Ich hoffe einer von euch hat ein paar Ideen dazu.

Viele Grüße,

Chris

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Sam,

was genau wird denn gehosted?

Ich gehe mal stark davon aus, dass es sich hierbei nicht nur um eine normale Webseite handelt sondern wahrscheinlich eher vielleicht ein Shop, Webseite mit großer Datenbank und vielen PHP Scripten.

Da gibt es dann mehrere Fehlerquellen bei sowas.

1. Die Scripte sind schlecht programmiert, sodass eine hohe CPU Auslastung entsteht.

2. Ihr habt eine große Datenbank mit vielen Zugriffen und verwendet langsame HDDs.

3. Die Konfiguration des Webservers ist nicht optimal oder fehlerhaft.

4. Die Hardware ist für eure Webserverumgebung nicht ausgerichtet.

Weitere Informationen und Tipps findest du hier: Speed-Guide | SSD Webhosting

bzw. in den FAQs

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da es ein WinServer 2k8 ist, würde ich Dir Perfmon ans Herz legen. Das Teil liefert Dir zum einen jede Menge an Infos, aktuell, oder aber auch über einen längeren Zeitraum hinweg (als Monitoringtool).

Nun habe ich nach Tools gesucht um den WebServer unter Stress zu setzen und die Systemauslastung zu überwachen. Bis jetzt habe ich aber nur Tools gefunden mit den ich HTTP-Requests erzeugen kann, klappt soweit auch ganz gut.

Ich verstehe nicht ganz, was "Stress" (anderes als massive HTTP-Requests) für einen Webserver sein sollte, aber hier wäre curlloader eventuell von Interesse.

Darüberhinaus hast Du Dir ja eine nette Beschäfigung ausgesucht: "Performanceprobleme" können myriarden von Ursachen haben.

Allein Hardwareseitig gibt es zig Ursachen:

1) Die Verkabelung ist ungenügend

2) Die Anbindung an die Datenbank laggt, weil die Datenbank unter RAID5 betrieben wird

3) Der Datenbankserver ist unterdimensioniert, was Speicher anbelangt

4) Der Webserver ist unterdimensioniert, was Speicher anbelangt

5) Das ganze läuft in einer virtualisierten Umgebung und die Plattenstruktur darunter macht Kummer

Ganz zu schweigen von den ganzen Software-Problemen.

Um Dir überhaupt ansatzweise einen Tip geben zu können, wo Du überall nachguckn könntest, müssten wir schon ein wenig mehr erfahren:

Serverspeicher (physikalisch), Serverspeicher (virtuell), wo liegt die Auslagerungsdatei, welche Festplatten wie verbaut, Netzanbindung. Sind eigentlich Datenbankserver und Webserver separat (was ich impliziere), oder liegen die auf einem System?

Welche Anwendung von wem programmiert wird betrieben? Wenn es sich um eine .NET-Anwendung handelt, könntest Du mit Perfmon ein Profiling machen und gucken, wieviele Objekte erzeugt werden und was der GC so zu tun hat.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Leute,

vielen Dank für die schnellen und jetzt schon hilfreichen Beiträge.

Entschuldigt, dass ich diese Infos vergessen habe gleich zu posten.

Der Webserver:

-VM

-Microsoft Win Server 2008 R2 (SP1) 64bit

-4GB RAM-Speicher

-E5620 2,4 GHz Quadcore

Der SQL Server:

-VM auf dem selben Host wie der Webserver

-Microsoft Win Server 2008 R2 (SP1) 64bit

-Microsoft SQL Sever 2008 R2

-4GB RAM-Speicher

-E5620 2,4 GHz Quadcore

Zu den verbauten Festplatten und dem verwendeten RAID-System, kann ich morgen auf der arbeit erst mehr sagen.

Wir hosten ein selbstentwickeltes Portal zum Verwalten von Medien. Im Hintergrund läuft wirklich eine relativ umfangreiche Datenbank. Das Portal wird aber ausschließlich von einem Kunden verwendet, d.h. ~10 User, also keine große Anzahl an HTTP-Requests.

Den Punkt...

1. Die Scripte sind schlecht programmiert, sodass eine hohe CPU Auslastung entsteht.

...klammer ich jetzt einfach aus, nicht weil ich behaupte, dass dies unmöglich der Fall sein kann, sondern weil auch im Falle von schlecht programmierten Skripten, ich nichts daran ändern kann :D

3) Der Datenbankserver ist unterdimensioniert, was Speicher anbelangt

4) Der Webserver ist unterdimensioniert, was Speicher anbelangt

Als ich den Server mithilfe des Tools gestresst habe, habe ich gleichzeitig die Systemauslastung auf den beiden Maschinen überwacht. Ich konnte kein einziges Mal feststellen, dass der Arbeitsspeicher zu sehr ausgelastet ist, im Gegenteil, dieser war nie mehr als 50% ausgelastet.

Eine 90-100% CPU Auslastung auf dem WebServer ließ sich da viel einfacher provozieren. Wobei auch diese erst erreicht wurde, als ich mich bei den simulierten HTTP-Requests schon nicht mehr in einem realistischen Szenario bewegt habe (25 - 50 Threads, 1000-1500 Wdh. ).

Weitere Informationen und Tipps findest du hier: Speed-Guide | SSD Webhosting

bzw. in den FAQs

Das sieht auf den ersten Blick erstmal auch sehr interessant aus, Danke dafür, mal sehen was sich davon morgen umsetzen lässt.

Grüße,

Chris

Bearbeitet von Sam_Sampleman
Link zu diesem Kommentar
Auf anderen Seiten teilen

Was für ein Webserver läuft mit welcher Technologie? IIS mit ASP.NET?

Es gibt unzählige Punkte, an denen ein Bottleneck auftreten kann - bei Datenbankabfragen z.B. wegen zu wenig erlaubten Verbindungen zum SQL Server, schlecht entworfenen Queries, fehlenden Indizes, etc.

Schau Dir mit einem Profiling-Tool erst mal auf Clientseite an, wo am meisten Zeit verbraucht wird. Im IE oder Firefox mit Firebug kann man z.B. sich die Ladezeiten einzelner Elemente anzeigen lassen.

ASP.Net Apps kann man mit VS und entsprechenden Tools monitoren: Überwachen der ASP.NET-Anwendungsleistung

Das würde ich aber dann eher dem überlassen, der das Programm verbrochen hat :)

Grüße

Ripper

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

es läuft IIS 7 mit ASP.Net Version 2.0.

Festplatten sind 2x HP 6G DP 7,2k mit 500GB im RAID 1.

Da es ein WinServer 2k8 ist, würde ich Dir Perfmon ans Herz legen. Das Teil liefert Dir zum einen jede Menge an Infos, aktuell, oder aber auch über einen längeren Zeitraum hinweg (als Monitoringtool).

Das ist ja nen echtes WunderTool, wieso wusste ich nicht früher davon ?! :o Also Perfmon segnet die Hardware beider Systeme bedingungslos ab(Netzwerkanbindung/auslastung, Prozessor, Speicher, Festplattenzugriffe), habe auch in verschiedenen Zuständen geprüft, Idle, vollast, bla...

Grüße,

Chris

Link zu diesem Kommentar
Auf anderen Seiten teilen

Noch eine kleine Ergänzung zu meinem Anliegen.

Ich suche auch noch nach einer konkreten Möglichkeit die Geschwindigkeit des Webservers zu messen.

Momentan beurteile ich die Performance/steigerung nur durch manuelles Aufrufen der Seite und durch das Messen der Ladezeiten.

Vlt kennt ja jemand eine Möglichkeit einen konkreten Wert zu ermitteln, mit dem ich die Performance nach verschiedenen Maßnahmen vergleichen kann und sich evtl Verbesserungen ermitteln lassen.

Vielen Dank im Voraus,

Chris

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vlt kennt ja jemand eine Möglichkeit einen konkreten Wert zu ermitteln, mit dem ich die Performance nach verschiedenen Maßnahmen vergleichen kann und sich evtl Verbesserungen ermitteln lassen.

Du musst erst einmal definieren wach Du objektiv messen magst z.B. die Zeit vom Absetzen des Aufrufes der Seite bis zur Darstellung auf Deinem Browser. In diesem Fall hast Du z.B. die Latenz des Netzwerkes und die Zeit des Renderings mit gemessen.

Je nach Anbindung des Servers und dem realen Routing können da durchaus große Unterschiede entstehen, die eine hohe Varianz der Daten verursachen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde mal folgende Zeiten erfassen:

1) Ausführzeit des PHP-Scriptes

2) Ausführzeiten von SQL-Queries

Wie das geht, findest du sicherlich bei Google.

Auch sollte Apache (setzt ihr das ein?) gut konfiguriert sein, zB indem alle unnützen Module entfernt werden. Vielleicht kann man sich auch überlegen, eine andere Serversoftware (zB nginx) zu verwenden...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

dann lag ich ja garnicht so falsch damit, einfach die Zeit zu stoppen die für den Aufbau der Seite gebraucht wird.

@pr0gg3r

Ich werd mich schlau machen und schauen ob sich das umsetzen lässt, klang im ersten Augenblick etwas zu kompliziert für mich :confused:

Ach und Nein wir setzen kein Apache ein.Leider.

Gruß,

Chris

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...