Linux Sunucularda Disk I/O Darboğazı Nasıl Tespit Edilir?
Linux Sunucularda Disk I/O Darboğazı Nasıl Tespit Edilir?
Son Güncelleme: Eylül 2026
Bir web sitesi yavaşladığında ilk şüpheli çoğu zaman işlemci veya bellek olur. Oysa disk I/O darboğazı, yani disk giriş ve çıkış işlemlerindeki sıkışma, yeterli işlemci ve boş bellek bulunan bir Linux sunucusunda bile sayfaların geç açılmasına neden olabilir. Bu rehberde disk gecikmesini ölçmeyi, yoğunluğu hangi işlemin oluşturduğunu bulmayı ve ölçümlere göre doğru iyileştirmeyi seçmeyi öğreneceksiniz.
İçindekiler
- Disk I/O Darboğazı Nedir?
- Ölçüme Nasıl Hazırlanılır?
- iostat ile Disk Analizi
- vmstat ve I/O Baskısını Yorumlama
- pidstat ile Yoğun İşlemi Bulma
- Yaygın Darboğaz Senaryoları
- Güvenli İyileştirme Adımları
- İzleme ve Kapasite Planlaması
- Sıkça Sorulan Sorular
- Sonuç
Disk I/O Darboğazı Nedir?
I/O, giriş ve çıkış işlemlerinin kısaltmasıdır. Disk bağlamında uygulamanın veri okuması, veritabanının kayıt yazması veya işletim sisteminin önbellekte tutamadığı bir dosyayı depolamadan getirmesi gibi işlemleri kapsar. Darboğaz ise bu taleplerin, beklenen yanıt süresini karşılayamayacak ölçüde birikmesidir. Sorun her zaman yüksek veri aktarım miktarı değildir: Az sayıda fakat yavaş tamamlanan küçük okuma da bir web isteğini belirgin biçimde geciktirebilir.
Örneğin bir e-ticaret uygulamasında ürün görselleri hızla sunulurken ödeme sayfası geç açılıyorsa, yalnızca toplam disk hızına bakmak yanıltıcıdır. Ödeme akışının kullandığı veritabanı sorguları küçük ve rastgele okumalara bağımlı olabilir. Buna karşılık büyük bir yedekleme dosyasının yazılması yüksek aktarım hızı üretse de diğer uygulamaları etkilemiyorsa kullanıcı açısından darboğaz oluşmamış olabilir.
Gecikme ve aktarım hızı farklı şeylerdir
Gecikme, bir isteğin tamamlanması için geçen süreyi; aktarım hızı, belirli sürede okunan veya yazılan veri miktarını anlatır. IOPS ise saniyedeki giriş ve çıkış işlemi sayısıdır. Çok sayıda küçük dosya kullanan bir uygulama IOPS ve gecikmeye duyarlıyken büyük arşiv dosyalarıyla çalışan bir süreç aktarım hızına daha duyarlı olabilir. Bu nedenle tek bir metriği hedef almak yerine uygulamanın iş yükünü anlamak gerekir.
Ölçüme Nasıl Hazırlanılır?
Tanılamaya, şikâyetin zamanını ve kapsamını kaydederek başlayın. Yavaşlık yalnızca belirli saatlerde mi görülüyor? Tek bir siteyi mi, bütün sunucuyu mu etkiliyor? Aynı dakikalarda yedekleme, rapor üretimi veya büyük dosya aktarımı çalışıyor mu? Karşılaştırılabilir ölçüm için sorunlu dönemle normal dönemin verilerini aynı araçlarla alın. Anlık tek bir ekran görüntüsü yerine birkaç örnek toplamak, kısa süreli sıçramaları sürekli kapasite sorunlarından ayırır.
Önce disk ve bağlama noktalarını belirleyin. Böylece ölçümde görünen aygıt adını hangi uygulamanın veri diziniyle ilişkilendireceğinizi bilirsiniz:
lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS
df -hT
lsblk blok aygıtlarını ve bağlama noktalarını, df -hT dosya sistemlerinin doluluk durumunu gösterir. Disk doluluğu ile disk I/O baskısı aynı sorun değildir: Boş alanı bulunan bir disk yavaş olabilir; dolu bir dosya sistemi ise yazma hatalarına yol açabilir. Önce hangi belirtiyle karşı karşıya olduğunuzu ayırın.
Sanal sunucuda görülen disk, fiziksel depolama aygıtı olmayabilir. Bu nedenle konuk işletim sistemindeki ölçümler uygulamanın deneyimini gösterse de alttaki fiziksel aygıtın bütün yükünü açıklamaz. Ölçümleri değerlendirirken sunucunun sanal mı, fiziksel mi olduğunu ve depolamanın yerel mi, ağ üzerinden mi sağlandığını not edin.
iostat ile Disk Analizi
iostat, işlemci ve blok aygıtı istatistiklerini gösterir. Komut sisteminizde yoksa dağıtımınızın paket yöneticisinden sysstat paketini kurmanız gerekebilir. Aşağıdaki komut genişletilmiş disk istatistiklerini birer saniyelik aralıklarla beş kez toplar:
iostat -xz 1 5
İlk rapor, aracın kullanım biçimine bağlı olarak açılıştan beri hesaplanan ortalamayı içerebilir. Bu nedenle özellikle aralıklı raporları ve sorunun yaşandığı zaman dilimini inceleyin. -x ayrıntılı ölçümleri, -z ise örnekleme boyunca etkinlik göstermeyen aygıtların gizlenmesini sağlar. Aygıtlar arasında karşılaştırma yaparken aynı zaman aralığındaki satırlara bakın.
Hangi sütunlar önemlidir?
| Ölçüm | Ne anlatır? | Nasıl yorumlanır? |
|---|---|---|
r/s ve w/s | Saniyedeki okuma ve yazma isteği sayısı | İş yükünün işlem yoğunluğunu gösterir; tek başına sorun kanıtı değildir. |
rkB/s ve wkB/s | Okunan ve yazılan veri miktarı | Büyük aktarımlarla küçük, sık işlemleri ayırmaya yardımcı olur. |
await | İsteğin kuyrukta ve hizmette geçirdiği ortalama süre | Normal döneme göre yükselmesi gecikme belirtisi olabilir. |
r_await ve w_await | Okuma ve yazma için ayrı ortalama süreler | Yavaşlığın hangi işlem türünde yoğunlaştığını gösterir. |
aqu-sz | Ortalama istek kuyruğu uzunluğu | Artan gecikmeyle birlikte yükseliyorsa birikmeye işaret edebilir. |
%util | Aygıtın isteklerle meşgul olduğu zaman oranı | Tek başına kapasitenin tamamen tükendiği anlamına gelmez. |
En önemli karşılaştırma, uygulama yavaşlığı ile await ve kuyruk ölçümlerinin aynı anda değişip değişmediğidir. %util değerini mutlak bir doluluk göstergesi gibi okumayın. Bu değer, özellikle paralel istek işleyebilen modern SSD ve RAID düzenlerinde performans sınırını tek başına göstermez. Ayrıca await kuyrukta bekleme ile hizmet süresini birlikte içerir; yalnızca diskin kendi işlem süresi değildir.
Örneğin günlük kullanımda düşük kalan yazma gecikmesi, gece yedeği sırasında belirgin biçimde yükseliyor ve aynı anda ödeme işlemleri yavaşlıyorsa ilk hipotez yazma yükünün diğer işlemleri bekletmesidir. Ancak kesin sonuca varmadan önce hangi işlemin yazdığını ve uygulama kayıtlarında aynı zamanlı başka hata olup olmadığını kontrol edin.
vmstat ve I/O Baskısını Yorumlama
vmstat, süreç, bellek, takas alanı (swap), blok I/O ve işlemci etkinliğini birlikte görmeye yardımcı olur. Altı örnek almak için şu komutu kullanın:
vmstat 1 6
Buradaki ilk satır genellikle son açılıştan beri oluşan ortalamadır; sonraki satırlar belirtilen örnekleme aralığını yansıtır. bi ve bo blok aygıtına yönelik giriş ve çıkışı, wa ise işlemcinin I/O bekleme oranını gösterir. Yüksek wa tek başına belirli bir diskin arızalı olduğunu kanıtlamaz. Bellek baskısı, takas kullanımı veya farklı aygıtlardaki işler de tabloyu etkileyebilir.
PSI ile iş yükünün beklemesini görmek
Linux çekirdeğindeki PSI (kaynak baskısı nedeniyle duraksama bilgisi), işlerin I/O yüzünden ne ölçüde beklediğini değerlendirmek için ek bir bakış sunar. Sistem bu arayüzü sağlıyorsa aşağıdaki dosyayı okuyabilirsiniz:
cat /proc/pressure/io
Çıktıdaki some, en azından bazı işlerin duraksadığı zamanın payını; full, çalışabilir durumdaki işlerin tamamının I/O nedeniyle duraksadığı zamanın payını ifade eder. avg10, avg60 ve avg300 sırasıyla farklı uzunluktaki yakın dönem ortalamalarını gösterir. Bu ölçümü iostat ile birlikte değerlendirmek yararlıdır: Aygıtta etkinlik görülmesi başka, uygulama işlerinin gerçekten beklemesi başkadır. Dosya yoksa çekirdek yapılandırmasını kontrol edin; özelliğin her sistemde hazır olduğunu varsaymayın.
pidstat ile Yoğun İşlemi Bulma
Aygıtta sorun işareti bulduktan sonraki soru, hangi işlemin yük oluşturduğudur. sysstat araçlarından pidstat, işlemlere göre I/O etkinliğini örnekleyebilir:
pidstat -d 1 5
-d disk I/O istatistiklerini seçer. Çıktıdaki işlem kimliği (PID) ve komut adını, sorun saatinde çalışan uygulama, veritabanı veya yedekleme göreviyle eşleştirin. Bir işlemin yüksek yazma miktarı göstermesi otomatik olarak hatalı olduğu anlamına gelmez; veri içe aktarma sırasında böyle bir davranış beklenebilir. Asıl soru, bu yükün diğer hizmetlerin yanıt süresini bozup bozmadığıdır. İşlem istatistikleri ile aygıt istatistikleri farklı katmanları anlattığı için değerlerin birebir eşleşmesini beklemeyin.
İşlem adı bir veritabanına aitse hemen depolama planını büyütmeyin. Yavaş sorguları, indeks kullanımını ve sorguların gereksiz yere büyük veri kümelerini tarayıp taramadığını inceleyin. İşlem bir yedekleme aracına aitse yedeklemenin çalışma saatini ve aynı depolamaya eşzamanlı okuma-yazma yapıp yapmadığını değerlendirin. Dosya yolu, disk aygıtı, işlem ve kullanıcı şikâyeti aynı zaman çizelgesinde anlam kazanır.
Yaygın Darboğaz Senaryoları
Yedekleme ile yoğun saatlerin çakışması
Birden fazla sitenin aynı sunucuda barındırıldığını düşünün. Tam yedekleme, akşam sipariş yoğunluğunda başlıyor; diskten veri okurken aynı diske büyük bir arşiv yazıyor. iostat okuma ve yazma gecikmesindeki artışı, pidstat ise yedekleme işleminin etkinliğini gösteriyorsa zamanlama güçlü bir iyileştirme adayıdır. Çözüm yedeklemeyi kaldırmak değil, iş yüküne uygun saate taşımak veya uygun mimaride ayrı bir hedefe yazmaktır.
Veritabanında gereksiz disk okumaları
Bir yönetim paneli açıldığında çok sayıda tablo taraması yapılıyorsa, toplam aktarılan veri aşırı yüksek görünmeyebilir. Buna rağmen rastgele okuma talepleri birikir ve panel yavaşlar. Bu durumda uygulama sorgularını ölçmek, uygun indeksleri değerlendirmek ve önbellekleme stratejisini gözden geçirmek, yalnızca daha hızlı disk satın almaktan daha kalıcı olabilir. İndeks eklemenin yazma maliyeti ve depolama etkisi de test edilmelidir.
Bellek baskısı ve takas kullanımı
Uygulamanın çalışma kümesi mevcut belleğe sığmıyorsa işletim sistemi takas alanına sık başvurabilir. Kullanıcı bunu disk yavaşlığı olarak hisseder; ancak temel neden yetersiz bellek veya beklenmedik bellek tüketimidir. vmstat çıktısındaki bellek ve takas hareketlerini, I/O ölçümleriyle birlikte yorumlayın. Sadece diski yükseltmek, sorunun kaynağını çözmeyebilir.
Sanal sunucuda dış etkenler
VPS veya VDS üzerinde uygulama ve işlem ölçümleri olağan görünürken gecikme artıyorsa, konuk işletim sisteminin göremediği depolama katmanını da hesaba katın. Önce kendi sunucunuzdaki yedekleme, güncelleme ve sorgu yüklerini dışlayın. Ardından sorun saatlerini, örnekleme sonuçlarını ve etkilenen aygıtı hizmet sağlayıcınızla paylaşın. Böyle bir kayıt, belirsiz bir “sunucu yavaş” bildiriminden daha yararlıdır.
Güvenli İyileştirme Adımları
Önce ölç, sonra değiştir yaklaşımı veri kaybı ve gereksiz harcamayı önler. Aynı anda birden çok ayarı değiştirmek, hangi adımın işe yaradığını anlamayı zorlaştırır. Özellikle üretim veritabanında yapılandırma değişikliği, dizin taşıma veya disk düzenini değiştirme öncesinde doğrulanmış yedeğiniz ve geri dönüş planınız bulunmalıdır.
- Zamanı doğrulayın: Yavaşlığın başladığı ve bittiği dakikaları uygulama kayıtlarıyla karşılaştırın.
- Etkilenen aygıtı bulun:
lsblkveiostatile hangi dosya sisteminin ilgili olduğunu belirleyin. - Yükü oluşturan işlemi saptayın:
pidstatverisini zamanlanmış görevler ve uygulama etkinliğiyle eşleştirin. - Uygulama kaynaklı işi azaltın: Gereksiz sorgu, tekrar eden dosya taraması veya aynı anda başlatılan toplu görevleri inceleyin.
- Yükü yeniden planlayın: Yedekleme ve içe aktarma işlerini mümkünse yoğun saatlerin dışına alın.
- Kapasiteyi değerlendirin: Optimize edilmiş iş yükünde de gecikme sürüyorsa depolama ve bellek gereksinimlerini yeniden hesaplayın.
- Sonucu yeniden ölçün: Aynı zaman aralığı ve benzer trafik altında gecikme ile uygulama yanıtını karşılaştırın.
Alan açmak amacıyla bilinmeyen dosyaları silmek, dosya sistemi önbelleğini düzenli olarak boşaltmak veya ölçüm olmadan veritabanı ayarlarını değiştirmek güvenilir performans yöntemi değildir. İyileştirme, gözlenen nedene yönelik olmalıdır. Yedeklerin ayrı bir hedefte tutulması da değerlendirilebilir; ancak kullanılan yöntemin geri yükleme testlerinden geçtiğinden emin olun.
İzleme ve Kapasite Planlaması
Tek seferlik tanılama sorunu açıklayabilir; sürekli izleme ise tekrarını erken fark etmeye yardımcı olur. Disk başına gecikme, okuma-yazma etkinliği, dosya sistemi doluluğu, PSI baskısı ve uygulama yanıt süresini birlikte izleyin. Ölçüm sıklığını sisteminizin trafik değişkenliğine göre belirleyin: Dakikalar süren ortalamalar kısa ama kullanıcıyı etkileyen sıçramaları gizleyebilir.
Uyarı eşiklerini başka bir sunucudan kopyalamak yerine kendi normal çalışma düzeyinizi temel alın. Örneğin gecikme için tek bir evrensel “iyi” sayı belirlemek yerine, günlük olağan değerleri ve yoğun saatlerde kabul edilebilir uygulama yanıtını kaydedin. Büyüyen veritabanı, artan müşteri sayısı ve uzayan yedekleme süresi kapasite planının yeniden gözden geçirilmesi için işarettir.
Kapasite kararı verirken yalnızca depolama alanına bakmayın. İş yükünüzün küçük ve sık işlemler mi, büyük sıralı aktarımlar mı ürettiğini; belleğin önbellek için yeterli olup olmadığını; yedeklemenin aynı depolamayla rekabet edip etmediğini değerlendirin. Böylece ihtiyaç, daha fazla disk alanı yerine daha uygun depolama performansı veya farklı bir sunucu mimarisi olarak tanımlanabilir.
Sıkça Sorulan Sorular
Disk I/O darboğazı ile disk doluluğu aynı şey midir?
Hayır. Disk doluluğu kullanılabilir depolama alanıyla ilgilidir; I/O darboğazı ise okuma ve yazma isteklerinin gecikmesiyle ilgilidir. Bir sunucuda bolca boş alan varken de istekler kuyrukta bekleyebilir.
%util yüksekse disk kesinlikle yetersiz midir?
Hayır. Bu ölçüm aygıtın isteklerle meşgul olduğu zamanı gösterir. Özellikle paralel işlem yapabilen depolamada kapasite sınırını tek başına kanıtlamaz. Gecikme, kuyruk ve uygulama yanıtıyla birlikte değerlendirilmelidir.
İşlemci kullanımı düşükken site neden yavaş açılır?
Uygulama diskten veya veritabanından yanıt bekliyor olabilir. İşlemci boş olsa bile gerekli veri gelmeden isteğin tamamlanması mümkün değildir. I/O ve uygulama ölçümlerini aynı anda inceleyin.
iostat komutu bulunamazsa ne yapılmalı?
Dağıtımınızda sysstat paketinin kurulu olup olmadığını kontrol edin. Paket kurma yetkiniz yoksa sunucu yöneticinizden yardım isteyin; mevcutsa vmstat ve /proc/pressure/io ile ön inceleme yapabilirsiniz.
Yedekleme sırasında görülen disk yükü normal midir?
Yedekleme sırasında disk etkinliği beklenir. Sorun, bu etkinliğin kritik uygulamaların yanıt sürelerini kabul edilemez ölçüde artırmasıdır. Yedekleme saatini ve hedefini, kurtarma gereksinimlerini koruyarak değerlendirin.
Daha fazla RAM disk I/O sorununu çözer mi?
Bazen. Bellek yetersizliği takas kullanımına veya aynı verinin sık sık diskten okunmasına yol açıyorsa yardımcı olabilir. Ancak yoğun yazma, verimsiz sorgular veya depolama katmanındaki başka bir gecikme söz konusuysa önce asıl neden ölçülmelidir.
Sonuç
Disk I/O darboğazını tespit etmek, yalnızca yüksek bir yüzde aramaktan ibaret değildir. Aygıt gecikmesini, istek kuyruğunu, işlem etkinliğini ve kullanıcıların hissettiği yavaşlığı aynı zaman aralığında değerlendirin. iostat, vmstat, pidstat ve PSI ölçümleri birlikte kullanıldığında, sorunun uygulama davranışından mı, zamanlanmış bir görevden mi yoksa kapasite ihtiyacından mı kaynaklandığına dair daha sağlam bir tablo oluşur.
Ölçümler mevcut altyapının iş yükünü karşılamadığını gösteriyorsa Corelux Sanal Sunucu, Kiralık Sunucu ve Yedekleme Hizmeti seçeneklerini ihtiyaçlarınıza göre değerlendirebilirsiniz. Doğru seçim, önce darboğazın nedenini belirlemek ve ardından hem performans hem veri güvenliği gereksinimlerini birlikte planlamaktır.
Yazar
Boran BAR