OS X Yosemite - Çok fazla dosya açık


18

Geçenlerde Mavericks Yosemite yükseltme .... baş ağrısı ortaya çıktı

Sorunumun açabileceğim dosya sayısından kaynaklandığından eminim - ancak nasıl çözüleceğinden emin değilim . Ayrıca, /etc/sysctl.confdosyayı ve /etc/launchd.confdosyayı oluşturma hakkındaki her makaleyi / ipucunu okuduğumdan da eminim

Açıklık uğruna bu ikisi de şu anda nb gibi görünüyor (Bu artık onları koymak için doğru komutlar olup olmadığından emin değilim - hemen hemen her şeyi ve her kombinasyonu denedim. Yani: daha yüksek değerler, daha düşük değerler , komutları kaldırma, komut ekleme)

/etc/launchd.conf

limit maxfiles 16384 32768
limit maxproc 1000 2000

/etc/sysctl.conf

# Turn up maxproc
kern.maxproc=2048
# Turn up the maxproc per user
kern.maxprocperuid=512

Ayrıca benim mevcut oturum için hem küresel hem de yerel ulimit değerlerimi artırmayı denedim ... hayır bueno

ulimit -a

-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-v: address space (kbytes)          unlimited
-l: locked-in-memory size (kbytes)  unlimited
-u: processes                       709
-n: file descriptors                4096

Tamam - işte başımın başladığı yer burası ... DB'm (homebrew ile kurulan percona-sunucu 5.6.21-69.0) boğulmaya ve ölmeye başladı ve mysql-error.log dosyasında hata ile dolduruldu too many files open.

2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tokenorder_products.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tokenorders.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tsdevices.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tsracks.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/v_classunity_classlist.frm' (errno: 24 - Too many open files)
2014-10-21 15:20:48 5190 [ERROR] Error in accept: Too many open files

Başlangıçta bu sorunu ulimit, maxfiles, maxproc, vb.

Sonunda - sinirli, devam ettim ve daha sonra bu konuya geri döneceğim. Böylece sonra sudo gem install nokogiri tekrar tekrar deniyordu başarısız olur ve aynı hatayı tükürmek (gem yerli uzantısı oluşturmak için başarısız builder.rb hakkında tekrarlar bir sürü - tekrarlanan yığın izleri Logs Gist bir sürü takip

nokogiri Yükleme Hataları nokogiri kurulum hataları

Ben denedim / googled bu sorunu çözmek için farklı yaklaşımlar bir demet (yani: ek bayraklar, vb ..). Whats amazing - ve bu sorunun dosya / süreç açık bağlı olduğunu düşünüyorum başladı topgem yükleme sırasında kontrol ederken .... Ne bulduğumu görmek oldukça şaşırdım

sırasında gem install nokogiri sudo gem yükleme nokogiri

Görünüşe göre sürecim çatallanıyor, bu da önceki resmimdeki bu ONE satırı için anlamlıydı (bkz. "Nokogiri yükleme hataları resmi")

sh: fork: Resource temporarily unavailable

Bu yüzden fikirlerden biraz uzaktayım, ancak artık dosya # hatalarının nasıl ayıklanacağından emin değilim?

GÜNCELLEME

Nokogiri'yi kurmayı başardım. Ne yazık ki, tam olarak ne sabit b / c pek çok şey denedim emin değilim. Ama yakut w / yeniden başa çıkmak zorunda olduğunu düşünüyorum. Ancak, ben hala önemsiz derecede küçük veritabanı herhangi bir tür kullandığınızda benim DB çok fazla dosya hakkında şikayet w / aynı sorunu alıyorum .


Hm. Muhtemelen çok fazla yumurtlamamalı? Belki de o gem devs ile bir hata yükseltmeye değer.
14'te

Yanıtlar:


16

Değiştirme /etc/launchd.confgoogle sorgu ve SO öneri lot başına Yosemite'te benim için işin (10.10) görünmüyordu. Sonuçta, çok sayıda değişiklik / yeniden başlatma / test kombinasyonundan sonra, /etc/sysctl.confdosya değiştirildi (veya yoksa oluşturuldu) .

Çalışması için koymak zorunda olduğum şey bu

kern.maxfiles=65536
kern.maxfilesperproc=65536

kern.maxfilesOrada olması gerekip gerekmediğinden emin değilim , ama orada tek başına olduğumda hala aynı sorunu yaşadım, kern.maxfilesperprocher şeyi eklediğimde çalışmaya başladım.


Bu değişkenlerin (beklendiği gibi) etkili olması için yeniden başlatma gerektiğini buldum. Yaparak değerlerin değiştiğini onaylayabilirsiniz sysctl -a | grep kern.maxfiles.
Blake Frederick

8

Mac OS X Yosemite'de açık dosya sınırlarını sistem genelinde ayarlamak için iki yapılandırma dosyası oluşturmanız gerekir. Birincisi /Library/LaunchDaemons/limit.maxfiles.plist, aşağıdaki XML yapılandırmasını içeren bir özellik listesi (diğer adıyla plist) dosyasıdır :

<?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>65536</string>
          <string>65536</string>
        </array>
       <key>RunAtLoad</key>
        <true/>
      <key>ServiceIPC</key>
        <false/>
    </dict>
  </plist>

Bu, açık dosyalar sınırını 65536 olarak ayarlar. İkinci plist yapılandırma dosyası /Library/LaunchDaemons/limit.maxproc.plistaşağıdaki içeriklerle birlikte depolanmalıdır :

<?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>2048</string>
          <string>2048</string>
        </array>
      <key>RunAtLoad</key>
        <true />
      <key>ServiceIPC</key>
        <false />
    </dict>
  </plist>

Her iki plist dosyasının da sahibi olmalı root:wheelve izinleri olmalıdır -rw-r--r--. Bu izinler varsayılan olarak yerinde olmalıdır, ancak çalıştırarak bunların yerinde olduğundan emin olabilirsiniz sudo chmod 644 <filename>. Yukarıda açıklanan adımlar, yeniden başlatma sonrasında sistem genelinde açık dosya sınırlarının doğru şekilde ayarlanmasına neden olsa da, bunları çalıştırarak manuel olarak uygulayabilirsiniz launchctl limit.

Sistem düzeyinde bu sınırları ayarlamaya ek olarak, oturum düzeyinde ayarlayarak yanı ederek aşağıdaki satırları ekleyerek tavsiye bashrc, bashprofileya da benzer dosyası:

ulimit -n 65536
ulimit -u 2048

Plist dosyaları gibi, bashrc veya benzeri dosyanızın -rw-r--r--izinleri olmalıdır . Bu noktada, bilgisayarınızı yeniden başlatabilir ve terminalinize ulimit -n girebilirsiniz. Sisteminiz doğru bir şekilde yapılandırılmışsa, maks. Dosyaların 65536 olarak ayarlandığını görmelisiniz.

Kaynak: http://docs.basho.com/riak/latest/ops/tuning/open-files-limit/


1
"launchctl limit maxfiles sınırsız sınırsız; launchctl limit maxfiles", 2015-09-30'da Yosemite 10.10.5'te maksimumların 10240 olduğunu bildiriyor ve onlarla denemeler yapmak, daha büyük bir açık sayı kullanırsanız, görmezden geldi.
Dave X

5

Yosemite'deki varsayılanlar 12K ve 10K gibi görünüyor:

$ sysctl -a | grep kern.maxfiles
kern.maxfiles: 12288
kern.maxfilesperproc: 10240

Sadece ayar kern.maxfilesiçinde /etc/sysctl.confsorunlarımı çözmüş görünüyor. /etc/sysctl.confdosya:

kern.maxfiles=24576

Sierra için tam olarak aynı değerler
Devin G Rhode

Ancak launchctl limit maxfilesbana bunu verdi:maxfiles 256 unlimited
Devin G Rhode
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.