Yasal Uyarı. İlk önce SU değilim. Biraz tecrübeli, orta seviye bir bilgisayar kullanıcısıyım. Bazı temel kodları yazabilirim, bilgisayarları 20+ yıldır kullandım. MSDOS, yıllar boyunca Windows'a OS X'deyim. Şimdi birkaç hafta boyunca yüksek ve düşük aradım ve bu yüzden yardım almak için büyük silahlara gelmeye karar verdim. Umarım bu konuda iyisindir.
İlk önce ben varım OS X 10.11.6
.
Crashplan yedekleme yazılımımla ilgili bir sorun yaşıyorum ve destek personeli ile birlikte çalışıyordum. Hepsi hataya düştü:
java.io.FileNotFoundException (Too many open files in system)
Hakkında okudum ve sistemimde izin verilen açık dosya sayısını artırmak zorunda kaldım. Bunu, içinde bulunan dosyaların değerlerini oluşturup değiştirdim /Library/LaunchDaemons
.
Ben iki dosya oluşturulur:
limit.maxfiles.plist
velimit.maxproc.plist
İçime limit.maxfiles.plist
yerleştirdiğim:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>54000</string>
<string>54000</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
ve içinde limit.maxproc.plist
yerleştirdim:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple/DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxproc</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxproc</string>
<string>4096</string>
<string>4096</string>
</array>
<key>RunAtLoad</key>
<true />
<key>ServiceIPC</key>
<false />
</dict>
</plist>
Yeniden başlattım ve launchctl limit maxfiles
bunun terminalde çalışarak etkilendiğini kontrol ettim . Bu, yürürlükte olduğunu gösterdi.
Yine crashplan'ı başlattım ve aynı hatayı verdi. Kaza planı insanlarını kontrol ettim ve temel olarak sert dediler ki, sorun bu, düzeltmek için git (ki bence yeterince adil).
Bu yüzden 900000000’e ulaşana kadar açılmasına izin verilen dosya sayısını artırdım. Evet, bu toplam 900 milyon dosyanın açılmasına izin veriyor. Toplam sürüşümde olduğundan daha fazla. Hata hala devam ediyor. launchctl limit maxfiles
Bununla kontrol etmek, etkin olduğunu gösterir.
Bu beni güdük bıraktı. Daha sonra etrafa baktım ve böyle bir komutu çalıştırabilirim ulimit -S -n 900000
, bu da sistemin başka bir bölümüne daha fazla dosya oynayacak. Nasıl çalıştığından emin değilim, ama kontrol ettim ulimit -a
ve etkili oldu. Crashplan ile aynı sorun olsa da.
Şimdi ne yapacağımdan emin değilim, bu yüzden işletim sistemi tanıyan insanlara daha iyi olduğunu sormaya geldim. Birileri bunu çözmek için ne deneyebileceğim konusunda bir rehberlik sunabilir mi?
Çok teşekkürler.
while true; do ts=$(date +%H_%M); sudo lsof > open_files_${ts}; wc -l open_files_${ts}; sleep 60; done
, dosyaları açık olan ve dakikada bir kaç tane olduğunu sayan işlemi yakalayacaktır. Sayı artıyorsa, sonuçları farklılaştırarak farkları görebilirsiniz, örneğin: diff open_files_13_13 open_files_13_14
Bazı farklılıklar olması gerektiğinden kanmayın; ancak bir süreç tutarlı bir şekilde göze çarpıyorsa, bir suçlu olabilir. Bu, siz kesene kadar her dakika yeni, büyük bir dosya oluşturur: Control-C