Açık dosyalardaki nr ve lsof sayısı neden farklı? [kapalı]


19

Birdenbire bir sorunla karşılaşıyorum; tüm uygulamalarım ve sunucu iyi çalışıyordu ve birdenbire açık dosya sayısının arttığını görüyorum.

Bu komutla kontrol ediyorum:

cat /proc/sys/fs/file-nr

Bunu kontrol 44544 0 128000ettiğimde, 44544 açık dosya sayısı gösterir.

Ama bu komutla kontrol lsof | wc -l ettiğimde - 28384 gösteriyor.

Peki hangisi doğrudur?

Maksimum açık dosya sınırım 65535

ulimit -a
open files                      (-n) 65535

Daha fazla açık dosya kullanan ilk 5 işlemi bilmek istiyorum. Bunu alabilirim lsofama burada gösterilen sayı yukarıda bahsettiğim diğer komuttan çok farklı.

Bu komut tarafından sayılan işlemlerin ayrıntılarını alabilir miyim cat /proc/sys/fs/file-nr?

Aşağıda belirtilen bağlantıya göre, açık dosya tanımlayıcılarını nasıl görüntüleyeceğimizi ancak lsof komutunu kullanamadığımızı söylüyor

Benim için bir çalışma var mı? Birden bire daha açık dosyaları kullanmaya başladığımı bulmaya ihtiyacım var.

GÜNCELLEME Sorun için özür dilerim. Ben wso-w kökünden lsof | wc kontrol değildi yapıyordum hata bulundu. Bu yüzden büyük bir fark görüyordum.

hala -nr ve lsof dosyalarının çıktısı arasında bir fark vardır. wc -l (kökten). lsof sayısı dosya -nr sayısından fazladır. Bunun nedeni, dosya -nr (bu lsof tarafından dosyalar olarak kabul edilir) bazı dizinleri görmezden geliyor ben google kendisi üzerinde bir litle araştırma tarafından bu nedenle bulundu. neyse! tüm yardım için teşekkürler çocuklar!



Is lsof | wc -l gerçekten negatif bir sayı gösteren?
Joe Sewell

3
bu olumsuz bir işaret değildi, bir tire!
Vasanth Nag KV

Yanıtlar:


8

Burada iki soru var gibi görünüyor. İlk olarak, file-nr ve file-max yapılarının tam dokümantasyonuna şuradan ulaşabilirsiniz:

https://www.kernel.org/doc/Documentation/sysctl/fs.txt

Bu, o dosyadaki alanları şu şekilde tanımlar:

Nr dosyasındaki üç değer, ayrılan dosya tanıtıcılarının sayısını, ayrılan ancak kullanılmayan dosya tanıtıcılarının sayısını ve en fazla dosya tanıtıcısı sayısını gösterir. Linux 2.6 her zaman 0'ı serbest dosya tanıtıcısı sayısı olarak bildirir - bu bir hata değildir, sadece ayrılan dosya tanıtıcısı sayısının kullanılan dosya tanıtıcısı sayısıyla tam olarak eşleştiği anlamına gelir.

Umarım bu yeterince açıktır. İkinci soru yukarıda belirtilen konu başlığında cevaplanmıştır ( /server/485262/number-of-file-descriptors-different-between-proc-sys-fs-file-nr-and-proc- pi ) ve her ikisine de

  1. "lsof kullanın" ve bir işlem tarafından kullanılan dosya tanımlayıcıları hakkında iyi bir yaklaşım elde etmeniz gerekiyorsa çıktıyı uygun şekilde filtreleyin veya,
  2. dosya tanıtıcı kullanımı zamanında bir anlık görüntü almak için / proc dosya sistemi içinde hareket (ve yine de çıkış filtre gerekir).

Bunun için doğru metrikleri elde etmenin zorluğu önemlidir, çünkü herhangi bir noktada kullanılan FD'lerin sayısı bir sistemde çok hızlı dalgalanabilir.

Aşağıdaki iş parçacığı 'lsof' yaklaşımı için bir filtreleme şeması önerir:

/server/396872/why-or-how-does-the-number-of-open-file-descriptors-in-use-by-root-exceed-ulim


sorumu güncelledi. ama oradaki tüm bilgiler için teşekkürler.
Vasanth Nag KV

Ancak , 1545'im zaten ulimitvarsa, 1024'e kadar dosya açabileceğimi söylediğimden nasıl mümkün olabilir lsof | wc -l?
Nakilon

Sorunuzun cevabı için lütfen lsofve sayfalarındaki manuel sayfaları okuyun ulimit.
Thomas N
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.