Hallo!
Folgendes Problem, das ich mir nicht erklären kann.
Ein Webprojekt wurde aus Perfomancegründen von einer 2 Serverlösung auf eine 3 Serverlösung umgestellt.
Früher:
Server 1: Bilder etc.
Server 2: MySql und Webserver
Nun läuft das Webprojekt auf 3 Servern
Server 1: Bilder, statische Inhalte (css, js)
Server 2: MySql Server (4.3)
Server 3: Webserver (lighttpd)
Das heisst der Nutzer ist auf Server 3 und Server 3 besorgt sich bei jedem Aufruf die dynamischen Inhalte vom MySql Server und die statischen Daten vom Bildserver.
Augenscheinlich läuft mit 3 Servern alles besser als vorher, jedoch wird der Seitenaufbau ab einer bestimmten Anzahl von Nutzern extrem langsam (sehr plötzlich), wo die 2-Server-Lösung früher noch besser war.
Die Loadwerte aller 3 Server sind dabei aber noch sehr entspannt. Der meistbeanspruchte Server ist Server 2. Der Loadwert liegt jedoch noch unter 5. Somit schliesse ich mal aus, dass es an der Überlastung eines Server liegt, da mit dieser Nutzerzahl die 2-Serverlösung noch gut klar kam.
Nun suche ich seit einigen Tagen den Flaschenhals. Kann es was damit zu tun haben, dass die MySql-Daten von einem externen Server aufgerufen werden bzw. gibt es vielleicht dafür in der my.conf eine Variable die ich verändern könnte?
Bin für jede Idee dankbar, die gepostet wird. Danke!
3 Server-Lösung langsamer als vorher mit 2 Servern, Flaschenhals gesucht!
Re: 3 Server-Lösung langsamer als vorher mit 2 Servern, Flaschenhals gesucht!
So ganz ohne nähere Angaben zur Konfiguration und Logauszüge wäre alles hier ins blaue geraten. Logischerweise ist der erste Schritt festzustellen, welcher der Server wirklich der Flaschenhals ist - die Load ist zwar ein Indikator, aber keine hinreichende Bedingung 8)
Wenn Du den MySQL im Verdacht hast, poste auch mal die Ausgabe vondas verrät einiges über die Cache-Nutzung etc. Weitere potenzielle Kandidaten: Forking von Lighty-Prozessen, Speicherbelegung und Swapping-Verhalten...
Grundsätzliche Optimierungsansätze:
Wenn Du den MySQL im Verdacht hast, poste auch mal die Ausgabe von
Code: Select all
SHOW STATUS;Grundsätzliche Optimierungsansätze:
- Für SQL- und Webserver: Mehr RAM - viel hilft viel
- bei MySQL: Query-Cache, Session-Tabellen auf MEMORY-Engine umstellen etc.
- bei Lighttpd: Caching (CML, mod_mem_cache), allgemeine Tuning-Themen
-
stanglwirt
- Posts: 48
- Joined: 2006-01-10 14:44
Re: 3 Server-Lösung langsamer als vorher mit 2 Servern, Flaschenhals gesucht!
der webserver holt sich die bilder etc. vom datenserver und liefert diese an den user aus?
das wird der flaschenhals sein. statt die daten von seiner eigenen festplatte zu holen, muss er übers netzwerk zugreifen und diese dann doch selbst ausliefern. damit verlagerst du zwar die festplatten-zugriffe des webservers auf den datenserver, hast aber eine viel höhere latenz wegen der netzwerk aktivität.
lösung: der webserver wird nur entlastet, wenn der user direkt die bilder etc. vom datenserver bekommt - ohne umweg über den webserver.
das wird der flaschenhals sein. statt die daten von seiner eigenen festplatte zu holen, muss er übers netzwerk zugreifen und diese dann doch selbst ausliefern. damit verlagerst du zwar die festplatten-zugriffe des webservers auf den datenserver, hast aber eine viel höhere latenz wegen der netzwerk aktivität.
lösung: der webserver wird nur entlastet, wenn der user direkt die bilder etc. vom datenserver bekommt - ohne umweg über den webserver.
Re: 3 Server-Lösung langsamer als vorher mit 2 Servern, Flaschenhals gesucht!
hey! danke euch beiden!
also das mit den bildern hab ich falsch beschrieben sorry. der user bekommt natürlich direkt die bilder vom bilderserver zu sehen... alles andere wäre ja eine mehrbelastung...
dennoch könnte der Server 1, dran "schuld" gewesen sein. habe eine kleinere ausgelagerte php funktion gefunden und deaktiviert. Server 1 ist ein nicht so gut ausgestatteter server und kam wohl nicht hinterher mit der auslieferung der daten und somit musste natürlich server 3 warten.
beobachte die sache derzeitig noch und warte die spitzenzeit ab ob das problem nun gelöst ist. danke und gruß
also das mit den bildern hab ich falsch beschrieben sorry. der user bekommt natürlich direkt die bilder vom bilderserver zu sehen... alles andere wäre ja eine mehrbelastung...
dennoch könnte der Server 1, dran "schuld" gewesen sein. habe eine kleinere ausgelagerte php funktion gefunden und deaktiviert. Server 1 ist ein nicht so gut ausgestatteter server und kam wohl nicht hinterher mit der auslieferung der daten und somit musste natürlich server 3 warten.
beobachte die sache derzeitig noch und warte die spitzenzeit ab ob das problem nun gelöst ist. danke und gruß
