Hohe Festplatten-E / A, wenn Cache verwendet wird?

9

Vor ein paar Tagen bemerkte ich ein Warten auf die Festplatten-E / A und einen Rückgang der Festplattenaktivität (was großartig war). Dann bemerke ich auch, dass mein Cache voll (*) und fragmentiert war. Dann habe ich den Cache geleert. Danach sprangen die Festplattenlatenz und die Festplattenaktivität auf die vorherige Stufe (was schlecht war).

IOtop zeigt, dass [jbd2 / sda2-8] und [flush-8: 00] immer über der Festplattennutzung liegen. Dies ist ein Dell R210, Hardware-RAID 1 (H200) mit viel freiem Speicher (insgesamt 16 GB, davon ca. 8 GB Puffer / Cache).

(*) Der Cache ist ein APC-Opcode-Cache für PHP, der den Festplattenzugriff für die Ausführung von PHP-Skripten reduziert. Der Cache war voll und fragmentiert, da er Dateien aus der Entwicklungsinstanz enthielt. Als ich das bemerkte, habe ich sie herausgefiltert.

Die Frage ist: Warum nimmt die Festplatten-E / A zu, wenn sie theoretisch abnehmen sollte? Unten sind einige Grafiken von Munin. Der Cache war vom 6. bis 8. Februar voll.

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Der APC-Cache ist derzeit in Ordnung.

Ändern Sie, nachdem ich apc.mmap_file_mask auskommentiert habe, wie von @ cyberx86 mitgeteilt

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Und nach ein paar Tagen /server//a/362152/88934

jcisio
quelle
2
Diese Grafik zeigt keinen Anstieg der E / A.
Psusi
1
Wenn Sie eine dateibasierte Speicherzuordnung verwenden (z. B. apc.mmap_file_mask=/tmp/apc.XXXXXX), wird möglicherweise eine erhöhte E / A angezeigt. Versuchen Sie, apc.mmap_file_maskden gemeinsamen Speicher (z. B. /apc.shm.XXXXXX) oder /dev/zero(anonymer zugeordneter Speicher) zu verwenden.
Cyberx86
1
@psusi vom 6. Februar 12 Uhr bis 8. Februar 12 Uhr war es niedrig, dann erhöht.
Jcisio
@ cyberx86 Ich habe es gerade geändert (diese Zeile auskommentiert, um anonymen zugeordneten Speicher zu verwenden) und es sieht so aus, als ob diese Hilfe. Ich werde noch ein paar Minuten überwachen, um zu sehen. Vielen Dank.
Jcisio
2
@psusi Es gibt / gab mehrere Probleme, die ich nur fortsetzen kann, nicht erklären: 1 / APC-Cache-Fehler (aber OS-Cache-Treffer für diese PHP-Dateien, also sehr wenig Festplatten-E / A, weniger Wartezeit, aber mehr durchschnittliche E / A-Zeit 2 / APC-Cache-Treffer, aber APC verwendete Dateien (dann fehlte der OS-Cache, weiß nicht warum) 3 / kurz, meine Frage lautet: "Wenn der Cache schlecht funktioniert hat, gibt es (fast) keine Festplatte I / O "- was Sie sagen, ist völlig im Widerspruch dazu.
Jcisio

Antworten:

10

Wenn Sie eine dateibasierte Speicherzuordnung verwenden (z. B. apc.mmap_file_mask=/tmp/apc.XXXXXX), wird möglicherweise eine erhöhte E / A angezeigt.

Versuchen Sie, apc.mmap_file_maskden gemeinsamen Speicher (z. B. /apc.shm.XXXXXX) oder /dev/zero(anonymer zugeordneter Speicher) zu verwenden. Wenn Sie die Einstellung undefiniert lassen, wird standardmäßig ein anonymer zugeordneter Speicher verwendet.

Normalerweise sind zugeordnete Dateien eine großartige Sache:

  • Im Vergleich zum vollständigen Speichern von Dateien im Speicher benötigen zugeordnete Dateien normalerweise weniger Speicher
  • Im Vergleich zum Speichern in einer Datei erfordern zugeordnete Dateien weniger Festplatten-E / A (da Schreibvorgänge zusammen aggregiert werden können).

Im Vergleich zum Speichern von Daten nur im Speicher fallen jedoch zusätzliche E / A an - erheblich, wenn sich die Datei ständig ändert. Der Nachteil, keine zugeordneten Dateien zu verwenden, ist ein Mangel an Persistenz - Ihr Cache überlebt einen Neustart nicht, da er nur im Speicher gespeichert wird.

Man kann daher vorschlagen, dass der Cache, während er sich füllte und stabilisierte, die meisten Änderungen durchlief, die ständig auf die Festplatte geschrieben werden mussten; Sobald der Cache voll war, verlangsamte der ttl für jedes Objekt die Rate, mit der Daten im Cache umgedreht wurden, wodurch die Änderung verringert und das Schreiben von Datenträgern verringert wurde.

cyberx86
quelle
4

Nach ein paar Tagen möchte ich nun mit einigen Grafiken zurückkommen. Die Änderung verbessert diese Situation erheblich. Es reduziert alles außer der E / A-Servicezeit (ich denke, das liegt daran, dass keine trivialen kleinen PHP-Dateien mehr gelesen werden, was billig ist).

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Die Serverlast (es war schon ziemlich niedrig, also hatte ich die Änderung nicht entdeckt).

Geben Sie hier die Bildbeschreibung ein

jcisio
quelle
Könnten Sie bitte die von Ihnen vorgenommenen Änderungen angeben?
Mircea Vutcovici
Lesen Sie den Kommentar zur Frage und die akzeptierte Antwort. Ich habe apc.mmap_file_mask=/tmp/apc.XXXXXX
auskommentiert
Hey, tut mir leid dich zu stören. Haben Sie jemals Nebenwirkungen beim Auskommentieren der Zeile mmap_file_mask gesehen? Ich sehe das gleiche Problem ... und dies löst eindeutig meine E / A-Nutzungsprobleme. Aber ich habe mich gefragt ... ob nichts anderes kaputt geht! Vielen Dank!
Jorge Leandro Perez
Ich hatte kein Problem damit, diese Zeile zu kommentieren.
jcisio