Linux NFS sunucu performansını analiz etmek


22

Uygulamalarımızdaki olası darboğazları izlemeye yardımcı olmak için NFS sunucumuzun bir analizini yapmak istiyorum. Sunucu SUSE Enterprise Linux 10 kullanıyor.

Bilmek istediğim şeyler:

  • Hangi dosyalara hangi istemciler tarafından erişiliyor
  • Müşteri bazında okuma / yazma işlemi
  • Diğer RPC çağrıları tarafından dayatılan ek yük
  • Bir istemciye hizmet vermek için diğer NFS isteklerinde veya disk G / Ç'de beklemek için harcanan süre

Kullanılabilir istatistikleri zaten biliyorum /proc/net/rpc/nfsdve aslında bunları ayrıntılı bir şekilde açıklayan bir blog yazısı yazdım . Aradığım şey, daha derine inmenin ve belirli bir müşteri tarafından görülen performansa hangi faktörlerin katkıda bulunduğunu anlamanıza yardımcı olacak bir yol. NFS sunucusunun kümemizdeki bir uygulamanın performansında oynadığı rolü analiz etmek istiyorum, böylece onu en iyi duruma getirmenin yollarını düşünebilirim.


Bu sistem musluğu için yazılmış bir şey gibi görünüyor. Dokümanlar biraz saçmalık ama sanırım bu tür bir analizi yapmak için bir şeyler hazırlayabilirsin. sourceware.org/systemtap/examples/keyword-index.html
Cian

Yanıtlar:


2

Sadece bir fikir, nfs trafiğini wireshark ile koklamaya çalışın. Hangi kullanıcının hangi dosyaya eriştiğini söyleyebilir:

tshark -R nfs -i eth0

2

Biri için mevcut olan tüm farklı * stat araçlarını söylemek zorundayım, nfsstat çok kötü! Size bir sürü sayaca bakma yeteneği veriyor ama hepsi bu. Onlara iki kez bakarsanız, her bir sayacın ne kadar değiştiğini anlamaya çalışmak zorundasınız ve değişim oranını bilmek istiyorsanız, o zaman örnekler arasındaki saniye sayısına bölmek zorundasınız. Adil olmak gerekirse, nfsstat uzun yıllar öncesine dayanıyor, işler hala oldukça kaba ve artık çıktı biçimini değiştirmek isteyen hiç kimse tarafından engellenmiyor, çünkü muhtemelen bir çok şeyi kıracak.

Nfs'yi izlemek için collectl kullanımıyla ilgili olarak, nfsstat çıktısını okunması çok daha kolay bir biçimde sağlar, ancak daha da iyisi saatlerce veya günlerce çalışmasına ve arka planda topladığınız verileri oynatmasına izin verebilirsiniz. Hangi işlemlerin yapıldığını görme isteği gelince, collectl ayrıca her bir işlemin ne kadar G / Ç yaptığını ve hatta en iyi G / Ç kullanıcılarını gösteren geri oynatmayı içeren işlem verilerini toplayabilir. Üst özelliği gerçek zamanlı olarak da kullanabilirsiniz.

Eğer diskleri izlemek isterseniz, kendi başınıza toplamanız da bunu yapabilir ve her şeyi koordineli bir ekranda görüntüleyebilir.

Şuna bak ...


2

collectl (özellikle NFS alt sistemi ), analiziniz için faydalı olabilecek çok güzel bir yardımcı programdır, ancak gereksinim listenizle eşleşmiyor . Bunu yapan herhangi bir Linux programının farkında değilim.

(Bana bu konu dışı bir not ekleyelim: Lütfen Orada olan ihtiyaçlarınızı eşleşen yazılımı: Sun'ın DTrace merkezli Analytics (pdf) . - ama ne yazık ki Linux üzerinde mevcut değildir Sen büyük çokça örnek bulabilirsiniz Brendan Gregg'in blogunda göstermek bu aracın yetenekleri.)



1

Bence bu, bugünün araçlarıyla ilgili problemi tam olarak vurgulamaktadır. Burada nfsstat, iostat ve iotop dahil en az 3 tanesinden bahsediyoruz. Ardından wireshare ve nfsreplay'den söz edildi. Bu gerçekten şeyler yapmak için normal bir yol gibi geliyor mu? Wireshark dışında, tamamen kendi başına bir kategoridir, 1 aracı tercih etmez miydin?

Açıcılar için, iostat'ın çıktısını çok faydalı bulurken, sayılardaki tüm bu .00 ile okumak çok zor. Collectl aynı verileri rapor ediyor ancak gözler için çok daha kolay biçimlendirilmiş. Nfsstat hakkında ne düşündüğümü zaten biliyorsunuz ve collectl herhangi bir veriyi tekrar oynayabildiğinden 'tekrar oynatım programına gerek yok'. 'İotop'a gelince, collect ayrıca I / O içeren herhangi bir şeye göre sıralanmış işlemleri de gösterebilir.

Yani orada da hepsi var, zaman damgaları ile tamamlandı. Daha iyi bir izleme aralığına ihtiyacınız varsa, örnekleme işlemini 0.1 veya 0.5 saniyeye veya aralarındaki herhangi bir şeye geri döndürebilirsiniz, bununla birlikte işlemleri bu kadar hızlı izlerseniz daha fazla ek yük elde edersiniz, ancak herhangi bir işlem izleme aracıyla yapabilirsiniz.

AND son bonusu collectl ile topladığınız ve bir elektronik tabloya yükleyebileceğiniz ve kolayca planlayabileceğiniz veya collectl-utils'in bir parçası olan colplot'ı kullanabileceğiniz bir şeydir.

-işaret


1

Sen denemek isteyebilirsiniz nfswatchdan http://nfswatch.sourceforge.net

Bazı örnek çıktıları http://prefetch.net/blog/index.php/2009/06/16/monitoring-nfs-operations-with-nfswatch/ adresinde görebilirsiniz.

nfswatchbir tür ( topbir toplu iş modu olup olmadığından emin değilim). Çalıştırdıktan sonra, bir tuşa basarak ekranı değiştirebilir (örneğin, NFS sunucunuzu kullanarak NFS istemcilerini görüntülemek için "c").

Ancak kısa testlerimde nfswatchNFSv4 ile çalışmıyor gibi görünüyor.


1
İlginç öneri. Aslında, yazarın kendisi NFSv4'ün desteklenmediğini ve aracın yaklaşık 3 yıldır güncellenmediğini söylüyor. Çok faydalı olacağına üzücü!
Tonin

1

Şu anda daha iyi yanıtlarım yok, ancak disk IO'yu tam olarak

iostat -mx <delay in sec.> <devices>

Çok yararlı rakamlar, özellikle ortalama kuyruk büyüklüğü ve IO'larınız için bekleme süresi (ms cinsinden) verir. Disklerinizin bir tıkanıklık olup olmadığını ve tıkanıklığın GÇ sayımı veya verimi olup olmadığını kolayca gösterir.

Sonra ile

netstat -plaute | grep nfs

İstemci bağlantılarını ve her istemciden gerçek zamanlı olarak aktarılan baytları göreceksiniz. Sürekli veri için üzerine döngü. Sürekli veri sağlayan bir komut dosyası hazırlamak oldukça kolay olurdu ... Üzerinde çalışıyorum :)

Şimdi işlem başına GÇ elde etmek için mükemmel iotop'u kullanabilirsiniz . Yine de, nfsd işlemlerini istemcilerle eşleştirmenin bir yolunu bulmanız gerekiyor.

Hangi dosyalara hangi müşteri tarafından erişildiğiyle ilgili olarak, sıkışıp kaldım. Aslında bir NFS istemcisinden okunan / yazılan dosyalar bile çıktıda görünmüyor.

Netstat'ta genişlemek için, olayların ana bilgisayar tarafından nasıl değiştiğini ve sıraladığını görmek için watch -d komutunu kullanın

watch -d "netstat -plaute | grep nfs | sort -k 4,5"

Hangi ana bilgisayarın NFS'de trafiğe neden olduğunu bulmak için şu ana kadar bulduğum en iyi çözüm bu. Daha sonra hangi dosyaya eriştiğini bulmak için müşteriye gidebilirim. Teşekkür ederim!
peschü

0

Nfsreplay'i kontrol etmek isteyebilirsiniz. Neler olduğunu anlamana yardımcı olabilir. Ayrıca burada bilgi ve linkleri faydalı bulabilirsiniz.

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.