Hallo zusammen.
Ich wollte mal allgemein nachfragen, wie eure Erfahrungen mit Netzwerk- bzw. Cluster-Dateisystemen sind.
Ich habe bisher viel mit GlusterFS experimentiert, welches ich aufgrund der einfachen Einrichtung bevorzuge.
Bis jetzt war ich mit den Ergebnissen immer sehr zufrieden, allerdings wollte ich dieses jüngst für eine geteilte Hosting-Umgebung einsetzen und habe festgestellt, dass die Read-Performance bei massenhaften Stat-Zugriffen, so wie PHP sie beispielsweise macht, extrem schlecht ist.
Wenn ich den Befehl "time find . -name "*.php" | wc -l" in einem etwas größeren WordPress-Projekt starte erhalte ich auf einem ext4-Mount folgende Werte:
3538
real 0m0.016s
user 0m0.008s
sys 0m0.004s
während auf dem GlusterFS-Mount der erste Aufruf ganze 23 Sekunden braucht:
3538
real 0m23.547s
user 0m0.048s
sys 0m0.088s
und danach immer noch etwas über 5 Sekunden:
3538
real 0m5.506s
user 0m0.048s
sys 0m0.084s
Demensprechend schlecht ist auch die Performance der Webseite (durchschnittlich 2-3 sek.), was in einer auf Geschwindigkeit orientierten Internet-Umgebung natürlich ein Killer ist.
Ich habe sämtliche Tipps zur Performance-Optimierung auf GlusterFS schon versucht, aber meistens eher noch schlechtere Ergebnisse erzielt.
Zuletzt habe ich versucht ein gemountetes RAW-Image (Loop-Device) auf dem GlusterFS Storage per NFS auf andere virtuelle Server zu sharen.
Lokal auf dem virtuellen Server mit dem Loop-Device ist die Performance super (trotz GlusterFS):
aber auf den anderen Servern ist auch bei NFS wieder das Problem mit der Read-Performance, wenn auch leicht besser als bei reinem GlusterFS Share:
3538
real 0m2.898s
user 0m0.020s
sys 0m0.064s
ich habe zusätzlich cachefilesd installiert, aber das hat keine nennenswerten Vorteile gebracht.
Ich frage mich, ob es eine Art zusätzliche Cache-Ebene gibt, welche ich vor den Netzwerk-Mount hängen kann, welche auch häufig auftretende Stats-Zugriffe cached. Mit einer Verzögerung von ein paar Minuten (Cachezeit) könnte leben, wenn dafür die Performance steigt.
Alternative wäre die Daten vom Netzwerk-Storage per rsync auf einen lokalen ext4-Mount zu verschieben und von dortaus auszuliefern, aber das nimmt mir die Möglichkeit Daten zurück zu schreiben.
Ich kann aber eigentlich auch nicht wirklich glauben, dass die Performance von vielen kleinen Dateien über einen Netzwerk-Mount so mieserabel sein soll. Vielleicht mache ich ja auch einfach etwas falsch.
Habt ihr ähnliche oder andere Erfahrungen gemacht?
Würde mich über einen Erfahrungsaustausch freuen.
Viele Grüße,
Oliver
Ich wollte mal allgemein nachfragen, wie eure Erfahrungen mit Netzwerk- bzw. Cluster-Dateisystemen sind.
Ich habe bisher viel mit GlusterFS experimentiert, welches ich aufgrund der einfachen Einrichtung bevorzuge.
Bis jetzt war ich mit den Ergebnissen immer sehr zufrieden, allerdings wollte ich dieses jüngst für eine geteilte Hosting-Umgebung einsetzen und habe festgestellt, dass die Read-Performance bei massenhaften Stat-Zugriffen, so wie PHP sie beispielsweise macht, extrem schlecht ist.
Wenn ich den Befehl "time find . -name "*.php" | wc -l" in einem etwas größeren WordPress-Projekt starte erhalte ich auf einem ext4-Mount folgende Werte:
3538
real 0m0.016s
user 0m0.008s
sys 0m0.004s
während auf dem GlusterFS-Mount der erste Aufruf ganze 23 Sekunden braucht:
3538
real 0m23.547s
user 0m0.048s
sys 0m0.088s
und danach immer noch etwas über 5 Sekunden:
3538
real 0m5.506s
user 0m0.048s
sys 0m0.084s
Demensprechend schlecht ist auch die Performance der Webseite (durchschnittlich 2-3 sek.), was in einer auf Geschwindigkeit orientierten Internet-Umgebung natürlich ein Killer ist.
Ich habe sämtliche Tipps zur Performance-Optimierung auf GlusterFS schon versucht, aber meistens eher noch schlechtere Ergebnisse erzielt.
Zuletzt habe ich versucht ein gemountetes RAW-Image (Loop-Device) auf dem GlusterFS Storage per NFS auf andere virtuelle Server zu sharen.
Lokal auf dem virtuellen Server mit dem Loop-Device ist die Performance super (trotz GlusterFS):
aber auf den anderen Servern ist auch bei NFS wieder das Problem mit der Read-Performance, wenn auch leicht besser als bei reinem GlusterFS Share:
3538
real 0m2.898s
user 0m0.020s
sys 0m0.064s
ich habe zusätzlich cachefilesd installiert, aber das hat keine nennenswerten Vorteile gebracht.
Ich frage mich, ob es eine Art zusätzliche Cache-Ebene gibt, welche ich vor den Netzwerk-Mount hängen kann, welche auch häufig auftretende Stats-Zugriffe cached. Mit einer Verzögerung von ein paar Minuten (Cachezeit) könnte leben, wenn dafür die Performance steigt.
Alternative wäre die Daten vom Netzwerk-Storage per rsync auf einen lokalen ext4-Mount zu verschieben und von dortaus auszuliefern, aber das nimmt mir die Möglichkeit Daten zurück zu schreiben.
Ich kann aber eigentlich auch nicht wirklich glauben, dass die Performance von vielen kleinen Dateien über einen Netzwerk-Mount so mieserabel sein soll. Vielleicht mache ich ja auch einfach etwas falsch.
Habt ihr ähnliche oder andere Erfahrungen gemacht?
Würde mich über einen Erfahrungsaustausch freuen.
Viele Grüße,
Oliver