Açık dosya sınırı OSX Yosemite'deki gibi çalışmıyor


22

Mac OS X’i Yosemite’e güncelledim ve şimdi bazı uygulamalar çalışmıyor (IBM DB2). Açık Dosyaları 65000 olarak ayarlamam gerektiğini biliyorum, ancak komut çalışmıyor.

Andress-MBP:~ root# ulimit -n 12288
Andress-MBP:~ root# ulimit -n 12289
-sh: ulimit: open files: cannot modify limit: Invalid argument

Bu neden oluyor ve sorunu nasıl düzeltebilirim?

Yanıtlar:


25

OS X'in her sürümü için açık dosya limitini değiştirmek için tamamen farklı bir yöntem var gibi görünüyor!

OS X Sierra (10.12.X) için yapmanız gerekenler:

  1. In /Library/LaunchDaemonsadlı bir dosya oluşturun limit.maxfiles.plistve içine aşağıdaki (sırasıyla yumuşak ve sert sınırları iki sayıyı, değiştirmekten çekinmeyin) yapıştırın:

    <?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>64000</string>
            <string>524288</string>
          </array>
          <key>RunAtLoad</key>
          <true/>
          <key>ServiceIPC</key>
          <false/>
        </dict>
      </plist> 
    
  2. Yeni dosyanızın sahibini değiştirin:

    sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
    
  3. Bu yeni ayarları yükle:

    sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
    
  4. Son olarak, limitlerin doğru olduğunu kontrol edin:

    launchctl limit maxfiles
    

7
MacOS 10.13 için yeni bir cevap bekliyorum! :)
NSTJ

1
Yeniden başlatana kadar süreç benim için işe yaramadı. Teşekkürler! gerçekten çok yardımcı oldu
user2773086

Ayrıca bu dosyaları değiştirerek diyor bu özü Sierra için bu açık dosya sınırı güncellemek için yoludur gist.github.com/tombigel/d503800a282fcadbee14b537735d202c
Devin G Rhode

1
Sınırların çalışması için yeniden başlatma gereklidir (# 4
no'lu

21

Görüyorum ki bu soruyu her yerde sormuştun.

Başa çıkmanız gereken bir çekirdek sınırı vardır, çekirdek sınırı olan kern.maxfiles ve ulimit ayarı yapılırken aşılamaz.

Kys.maxifiles dosyasını sysctl kullanarak nasıl değiştireceğiniz hakkında bir açıklama için Mac OS X'deki Krypted blog sayfası Maximum Files'a bakın .

Mac'ime henüz Yosemite yüklemedi. sysctl -w kern.maxfiles=65000Aynı kern.maxfiles = varsayılan olarak 12288 sınırı vardır Mavericks, üzerinde çalışır.

VM OS X 10.6.8'i kontrol ettim ve aynı OS X sürümünüzden önce nasıl çalıştığı sorusunu başlatan bir limit vardı.

DB2 kullanımı için önerilen limitleri gösteren bir slayt paylaşımı ( Mac OS X için DB2 ) Mac OS X için DB2'yi kurma ve ayarlama ), bkz . Sistem Parametrelerini Yükseltme , sayfa 7.

Sistem Parametrelerini Arttırın

/Etc/sysctl.conf dosyasını açın (veya henüz mevcut değilse oluşturun) ve aşağıdaki ayarları ekleyin. Bu ayarlar paylaşılan hafızaya ilişkin bazı ayarları ve Mac'te çalışmak için DB2'nin ihtiyaç duyduğu kullanıcı sınırlarını artırır.

Aşağıdakileri ekleyin /etc/sysctl.conf
kern.sysv.shmmax = 1073741824
kern.sysv.shmmin = 1
kern.sysv.shmmni = 4096
kern.sysv.shmseg = 32
kern.sysv.shmni = 4096 kern.sysv.shmseg = 32 kern.sysv.shmall = 1179648
kern.maxfilesperproc = 65536
kern.maxfiles = 65536

/etc/sysctl.confYükseltme yaparken dosyanızı kaybettiniz gibi geliyor .


Aslında, DB2'yi uzun zaman önce kurdum ve işe yaradı. Sonra geçen yıl Maverick’e güncelleme yaptım. Ve bugün Yosemite’e gittim ve bu problem ortaya çıkıyor. Zaten kurulu DB2'mi başlatamıyorum.
AngocA

Başka bir şey benim sysctl.conf benim yazıya koymak dosya aynıdır. DB2'yi ilk defa kurduğumda yarattım (bir yıl önce), ancak geçiş için ona dokunmadım.
AngocA

Sorun bu dosyada bazı blankspaces oldu: ibm.com/developerworks/community/forums/html/...
AngocA

1
İzleyen boşluklar, kim düşünebilirdi. Apple'ın dünyanın en iyi programcılarından bazılarına sahip olması gerekiyordu.
user187561 12:14

@ user187561 sysctl(8), BSD'den geliyor.
Drew Stephens

12

Mac OS 10.10'da ulimit ayarı launchctl limit ayarını aşamaz.

Bu nedenle , geçerli ayarı elde etmek için önce terminalde launchctl limit maxfiles komutunu çalıştırmanız gerekir :

launchctl limit maxfiles
maxfiles    256            unlimited 

Yani benim durumumda yumuşak sınır 256, zor sınır sınırsızdır. Ve eğer yumuşak sınırı 512'ye ayarlamak istersem:

sudo launchctl limit maxfiles 512 unlimited

Sınırlamaları ayarlamak için launchctl'ın detaylı kullanımı burada bulunabilir: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/launchctl.1.html


'launchctl sınırı maxfiles 512 sınırsız' 2015-09-30 tarihinde Yosemite 10.10.5 üzerinde (512,10240) benim (yumuşak, sert) sınırlarını ayarlamak göründüğünden
Dave X

2
"launchctl limit maxfiles sınırsız sınırsız; launchctl limit maxfiles", 10240'ın girilebilecek en büyük limit olduğunu gösterir. Daha büyük sayıları kullanmak, ayarı önceki gibi bırakarak sessizce başarısız olur.
Dave X
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.