Önbellek kullanıldığında yüksek disk G / Ç?


9

Birkaç gün önce bir disk G / Ç bekleme ve disk etkinliği düşüşü (ki bu harika) fark ettim. Sonra önbelleğimin dolu (*) ve parçalanmış olduğunu da fark ettim. Sonra önbelleği temizledim. Bundan sonra, disk gecikmesi ve disk etkinliği önceki seviyeye sıçradı (ki bu kötüydü).

IOtop, [jbd2 / sda2-8] ve [flush-8: 00] öğelerinin her zaman disk kullanımının üstünde olduğunu gösterir. Bu, çok fazla boş belleğe (toplam 16 GB, yaklaşık 8 GB arabellek / önbellek olan) sahip bir Dell R210, donanım RAID 1'dir (H200).

(*) Önbellek PHP için APC opcode önbelleğidir ve PHP komut dosyası yürütme için disk erişimini azaltır. Geliştirme örneğindeki dosyaları içerdiğinden önbellek doluydu ve parçalanmıştı. Bunu fark ettiğimde filtreledim.

Soru şudur: Teorik olarak azalması gerektiğinde disk G / Ç neden artar? Aşağıda muninden bazı grafikler var. Önbellek 6 ile 8 Şubat arasında doluydu.

resim açıklamasını buraya girin resim açıklamasını buraya girin APC önbelleği şu anda tamam.

@ Cyberx86 tarafından söylendiği gibi apc.mmap_file_mask yorum yaptıktan sonra değiştir

resim açıklamasını buraya girin resim açıklamasını buraya girin

Ve birkaç gün sonra https://serverfault.com/a/362152/88934


2
Bu grafik ES'de bir artış göstermiyor.
Şubat'ta psusi

1
Dosya destekli bellek eşleme (örneğin apc.mmap_file_mask=/tmp/apc.XXXXXX) kullanıyorsanız, yükseltilmiş G / Ç görebilirsiniz. apc.mmap_file_maskPaylaşılan belleği (ör. /apc.shm.XXXXXX) Veya /dev/zero(anonim mmapped bellek) kullanmayı ayarlamayı deneyin .
cyberx86

1
@ psusi 6 Şubat 12:00 8 Şubat 12:00 düşük, sonra arttı.
jcisio

@ cyberx86 Ben sadece değiştirdim (anonim mmapped bellek kullanmak için bu satır yorum) ve bu yardım gibi görünüyor. Görmek için birkaç dakika daha izleyeceğim. Teşekkürler.
jcisio

2
@psusi Sadece devam edebileceğim, açıklayamadığım birden fazla sorun vardı / vardı: 1 / APC önbellek özledim (ancak bu PHP dosyaları için OS önbelleği vuruldu, bu yüzden çok az disk G / Ç, daha az bekleme süresi ama daha fazla ortalama G / Ç zamanı , çoğunlukla MySQL InnoDB işlem taahhüdü) 2 / APC önbellek isabet ama APC dosyaları kullanıyordu (o zaman OS önbellek özledim, neden bilmiyorum) 3 / kısa, benim sorum "önbellek kötü çalıştığında, (neredeyse) disk yok I / O "- söyledikleriniz tamamen buna aykırı.
jcisio

Yanıtlar:


10

Dosya destekli bellek eşleme (örneğin apc.mmap_file_mask=/tmp/apc.XXXXXX) kullanıyorsanız, yükseltilmiş G / Ç görebilirsiniz.

apc.mmap_file_maskPaylaşılan belleği (ör. /apc.shm.XXXXXX) Veya /dev/zero(anonim mmapped bellek) kullanmayı ayarlamayı deneyin . Ayarın tanımsız tutulması, varsayılan olarak anonim mmapped bellek kullanılmasını sağlar.

Genellikle, mmapped dosyaları harika bir şeydir:

  • Bir şeyi tamamen bellekte saklamakla karşılaştırıldığında, mmapped dosyalar genellikle daha az bellek gerektirir
  • Bir şeyi bir dosyaya kaydetmeyle karşılaştırıldığında, mmapped dosyalar daha az disk G / Ç gerektirir (yazma işlemleri birlikte toplanabilir).

Bununla birlikte, bir şeyi tamamen bellekte saklamakla karşılaştırıldığında, dosya sürekli değiştiğinde önemli ölçüde eklenen G / Ç yaparlar. Mmapped dosyalarını kullanmamanın dezavantajı kalıcılık eksikliğidir - önbelleğiniz yalnızca bellekte depolandığından yeniden başlatmadan kurtulamaz.

Bu nedenle önbellek doldurulurken ve stabilize edilirken, sürekli olarak diske yazılması gereken en fazla değişikliğe uğradığını; önbellek dolduğunda, her nesne için ttl önbellekteki verilerin döndürülme hızını yavaşlatır, değişikliği azaltır ve disk yazmalarını azaltır.


4

Birkaç gün sonra, şimdi bazı grafikler ile geri dönmek istiyorum. Değişiklik bu durumu daha da iyileştirir. IO hizmet süresi hariç her şeyi azaltır (bence artık ucuz olan küçük önemsiz küçük PHP dosyası okuması yok).

resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin

Sunucu yükü (zaten oldukça düşüktü, bu yüzden değişikliği keşfetmemiştim).

resim açıklamasını buraya girin


Yaptığınız değişiklikleri verir misiniz?
Mircea Vutcovici

Soru yorumunu ve kabul edilen cevabı okuyun. Ben yorumapc.mmap_file_mask=/tmp/apc.XXXXXX
jcisio

Hey, rahatsız ettiğim için özür dilerim. Mmap_file_mask satırının yorumunda herhangi bir yan etki gördünüz mü? Aynı sorunu görüyorum ... ve bu G / Ç kullanım sorunlarımı açıkça çözüyor. Ama merak ediyorum ... başka bir şey kırılmazsa !. Teşekkürler!
Jorge Leandro Perez

Bu çizgiyi yorumlarken herhangi bir sorun yaşamadım.
jcisio
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.