Ich habe einen Allzweckserver, der E-Mail, DNS, Web, Datenbanken und einige andere Dienste für eine Reihe von Benutzern bereitstellt.
Es hat einen Xeon E3-1275 mit 3,40 GHz und 16 GB ECC-RAM. Ausführen des Linux-Kernels 4.2.3 mit ZFS-on-Linux 0.6.5.3.
Das Festplattenlayout besteht aus 2x Seagate ST32000641AS 2 TB-Laufwerken und 1x Samsung 840 Pro 256 GB SSD
Ich habe die 2 Festplatten in einem RAID-1-Spiegel und die SSD fungiert als Cache- und Protokollgerät, die alle in ZFS verwaltet werden.
Als ich das System zum ersten Mal einrichtete, war es erstaunlich schnell. Keine wirklichen Benchmarks, nur ... schnell.
Jetzt bemerke ich extreme Verlangsamungen, insbesondere im Dateisystem, in dem alle Maildirs gespeichert sind. Das Erstellen eines nächtlichen Backups dauert über 90 Minuten für nur 46 GB E-Mail. Manchmal verursacht die Sicherung eine so extreme Belastung, dass das System bis zu 6 Stunden lang fast nicht mehr reagiert.
Ich habe während dieser Verlangsamungen ausgeführt zpool iostat zroot
(mein Pool heißt zroot
) und Schreibvorgänge in der Größenordnung von 100 bis 200 KByte / s gesehen. Es gibt keine offensichtlichen E / A-Fehler, die Festplatte scheint nicht besonders hart zu arbeiten, aber das Lesen ist fast ungewöhnlich langsam.
Das Seltsame ist, dass ich genau die gleiche Erfahrung auf einem anderen Computer mit ähnlicher Hardware hatte, obwohl keine SSD, auf der FreeBSD ausgeführt wurde. Es funktionierte monatelang gut und wurde dann auf die gleiche Weise langsam.
Mein Verdacht ist folgender: Ich verwende zfs-auto-snapshot , um fortlaufende Snapshots für jedes Dateisystem zu erstellen. Es erstellt 15-minütige, stündliche, tägliche und monatliche Schnappschüsse und behält jeweils eine bestimmte Anzahl bei, wobei die ältesten gelöscht werden. Dies bedeutet, dass im Laufe der Zeit Tausende von Snapshots auf jedem Dateisystem erstellt und zerstört wurden. Es ist die einzige laufende Operation auf Dateisystemebene, die ich mir mit einem kumulativen Effekt vorstellen kann. Ich habe versucht, alle Schnappschüsse zu zerstören (aber den Prozess am Laufen gehalten und neue erstellt) und keine Änderung festgestellt.
Gibt es ein Problem beim ständigen Erstellen und Zerstören von Schnappschüssen? Ich finde sie ein äußerst wertvolles Werkzeug und bin zu der Überzeugung gelangt, dass sie (abgesehen vom Speicherplatz) mehr oder weniger kostengünstig sind.
Gibt es noch etwas, das dieses Problem verursachen könnte?
EDIT: Befehlsausgabe
Ausgabe von zpool list
:
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
zroot 1.81T 282G 1.54T - 22% 15% 1.00x ONLINE -
Ausgabe von zfs list
:
NAME USED AVAIL REFER MOUNTPOINT
zroot 282G 1.48T 3.55G /
zroot/abs 18.4M 1.48T 18.4M /var/abs
zroot/bkup 6.33G 1.48T 1.07G /bkup
zroot/home 126G 1.48T 121G /home
zroot/incoming 43.1G 1.48T 38.4G /incoming
zroot/mail 49.1G 1.48T 45.3G /mail
zroot/mailman 2.01G 1.48T 1.66G /var/lib/mailman
zroot/moin 180M 1.48T 113M /usr/share/moin
zroot/mysql 21.7G 1.48T 16.1G /var/lib/mysql
zroot/postgres 9.11G 1.48T 1.06G /var/lib/postgres
zroot/site 126M 1.48T 125M /site
zroot/var 17.6G 1.48T 2.97G legacy
Dies ist im Allgemeinen kein sehr ausgelastetes System. Die Peaks in der folgenden Grafik sind nächtliche Backups:
Ich habe es geschafft, das System während einer Verlangsamung zu fangen (ab heute Morgen um 8 Uhr). Einige Vorgänge reagieren ziemlich schnell, aber der Lastdurchschnitt liegt derzeit bei 145 und zpool list
hängt nur. Graph:
quelle
zpool list
undzfs list
.Antworten:
Schauen Sie sich arc_meta_used und arc_meta_limit an. Mit vielen kleinen Dateien können Sie den Metadaten-Cache im RAM füllen, sodass er auf der Festplatte nach Dateiinformationen suchen muss und die Welt zum Crawlen verlangsamen kann.
Ich bin mir nicht sicher, wie ich das unter Linux machen soll. Meine Erfahrung ist unter FreeBSD.
quelle