Ubuntu 18.04'te maksimum açık dosya sınırı nasıl artırılır?


16

Ben koşuyoruz ulimit -n 65536, aşağıdaki satırları eklenir /etc/security/limits.conf:

*    soft nofile 65536
*    hard nofile 65536
alix soft nofile 65536
alix hard nofile 65536
root soft nofile 65536
root hard nofile 65536

Ve session required pam_limits.soher ikisine de eklendi :

  • /etc/pam.d/common-session
  • /etc/pam.d/common-session-noninteractive

Ve fs.file-max = 65536hiç /etc/sysctl.d/60-file-max.conf.

Yine de, ulimit -noturumu yeniden başlattıktan ve çalıştırdıktan sonra , sadece 4096 (daha önce 1024 idi) alıyorum.

Neyi kaçırıyorum?

Yanıtlar:


12

Kılavuzdan:

 -n     The maximum number of open file descriptors (most
        systems do not allow this value to be set)

systemd bunun için bir seçenek var:

$ more /etc/systemd/system.conf | grep NOFILE
#DefaultLimitNOFILE=

Ancak bu yalnızca grafik kullanıcı ayarları içindir. Çıkarın #ve 65536 olarak ayarlayabilirsiniz.

Daniel Fernández'in yorumu :

DefaultLimitNOFILE=65536 

ayrıca gerekli olabilir

/etc/systemd/user.conf 

1
Bahsetmeyi unuttum, ben de yaptım.
Alix Axel

1
@AlixAxel: Bu cevap ek olarak, benim için çalıştı * - nofile 16384(I sadece 16384 çalışıyordu) /etc/security/limits.conf.
Doug Smythies

65k bir varsayımdır ve izin verilenin üst tarafında sabit kodlanmış sınırlar olması beklenir. Doug'un belirttiği gibi daha düşük başlamak isteyebilirsiniz;)
Rinzwind

"Ancak bu yalnızca grafik kullanıcı ayarları için de geçerlidir" ile ne demek istiyorsun?
sinan

1
Not ayarı için DefaultLimitNOFILE=65536de gerekli olabilir/etc/systemd/user.conf
Daniel Fernández

2

Ubuntu 18.04 Adım Adım

Umarım tüm bunlar yardımcı olur, oldukça uzun ama işe yarıyor (kanıtla)

Ubuntu 18.04 üzerine MongoDb kurarken bu konuya rastladım

https://posidev.com/blog/2009/06/04/set-ulimit-parameters-on-ubuntu/

Gördüğünüz gibi oldukça eski ama benim için çalışıyor.

İşte yaptığım şey.

  1. MongoDb Önerilen Ayarlar ( https://docs.mongodb.com/manual/reference/ulimit/#review-and-set-resource-limits )

    • -f (dosya boyutu): sınırsız
    • -t (cpu süresi): sınırsız
    • -v (sanal bellek): sınırsız [1]
    • -l (bellekte kilitli boyut): sınırsız
    • -n (açık dosyalar): 64000
    • -m (bellek boyutu): sınırsız [1] [2]
    • -u (işlemler / evreler): 64000
  2. Mevcut Sınırlarımı kontrol et

ubuntu @ isdb-stage: ~ $ ulimit -a
çekirdek dosya boyutu (bloklar, -c) 0
veri segment boyutu (kbyte, -d) sınırsız
çizelgeleme önceliği (-e) 0
dosya boyutu (bloklar, -f) sınırsız
bekleyen sinyaller (-i) 7873
maksimum kilitli bellek (kbyte, -l) 16384
maksimum bellek boyutu (kbyte, -m) sınırsız
açık dosyalar (-n) 1024
boru boyutu (512 bayt, -p) 8
POSIX ileti kuyrukları (bayt, -q) 819200
gerçek zamanlı öncelik (-r) 0
yığın boyutu (kbyte, -s) 8192
cpu süresi (saniye, -t) sınırsız
maksimum kullanıcı işlemi (-u) 7873
sanal bellek (kbyte, -v) sınırsız
dosya kilitleri (-x) sınırsız
  1. Neyin değişmesi gerektiğini not edin

    • bellekte kilitli boyut , sınırsız olarak ayarlanması gerekiyor.
    • açık dosyalar , 64000 olarak ayarlanması gerekiyor
    • süreç / iş parçacığı * , 64000 olarak ayarlanmalıdır
  2. Ubuntu bu sınırların nasıl değiştirileceği hakkında ne diyor?

$ man limit.conf

ADI
   limit.conf - pam_limits modülü için yapılandırma dosyası

AÇIKLAMA
   Pam_limits.so modülü, kullanıcı oturumlarına ulimit sınırları, hoş öncelik ve eşzamanlı oturum sayısı sınırını uygular. Bu yapılandırma dosyası sözdiziminin açıklaması,

       /etc/security/limits.conf dosyası ve * .conf dosyaları 
       /etc/security/limits.d dizini.
  1. Oldukça açık görünüyor, /etc/security/limits.conf dosyasını düzenleyin. Tamam anlayalım ....

İşte bu dosyanın başlangıcı ve tabii ki içinde talimatlar bile var, bunun iyi çocuklar tarafından yazılmış açık kaynak olduğunu unutmayın ! :)

    vi /etc/security/limits.conf

    # /etc/security/limits.conf 
    # Her satır, formdaki bir kullanıcı için bir sınır tanımlar:                                                                   
    #                                                                                
    #Nerede:                                                               
    # olabilir:
    # - bir kullanıcı adı

(Daha fazla ayrıntı istiyorsanız dosyaya kendiniz bakın)
  1. Sonunda değişiklikleri yapın. MongoDb mongodb grubu ve kullanıcısı olarak çalıştığından, kullanıcıların yalnızca sınırlarını yükseltmek iyi bir fikir olacaktır. Burada ve orada '*' kullanıldığını gördüm. Sunucudaki tüm ve muhtelif bu limitleri verir, bu da sunucunuzu en üst düzeye çıkarmak için kullanılabilir. Bu yüzden onları sadece mongodb kullanıcısı için yapalım.

İşte değişikliklerim: -

mongodb yumuşak memlock sınırsız
mongodb zor memlock sınırsız
mongodb yumuşak nofile 64000
mongodb sert nofile 64000
mongodb yumuşak nproc 64000
mongodb sert nproc 64000
  1. Son olarak, son olarak bunu adam limitlerinde hatırlayın. Conf girişi.

    limit.conf - pam_limits modülü için yapılandırma dosyası

    Daha iyi pam_limits modülünün yüklü olduğundan emin olun, böylece tüm bu sınırlar işler işe yarar. Bunu yapmak için /etc/pam.d/common-session adresini düzenlersiniz. Tabii ki bu da man sayfasında.

sudo vi /etc/pam.d/common-session

# Pam_limits.so'nun yüklendiğinden emin olmak için bunu ekleyin.
oturum gerekli pam_limits.so

Yeniden başlatma, (kullanıcı mongodb için) sınırların uygulandığını gösterecektir. Bunları '*' kullanarak uyguladıysanız, mongodb kullanıcısına geçmek zorunda kalmadan kontrol edebilirsiniz. Sadece bu komutu yürütün.

$ ulimit -a

çekirdek dosya boyutu (bloklar, -c) 0
veri segment boyutu (kbyte, -d) sınırsız
çizelgeleme önceliği (-e) 0
dosya boyutu (bloklar, -f) sınırsız
bekleyen sinyaller (-i) 7873
maksimum kilitli bellek (kbyte, -l) sınırsız
maksimum bellek boyutu (kbyte, -m) sınırsız
açık dosyalar (-n) 64000
boru boyutu (512 bayt, -p) 8
POSIX ileti kuyrukları (bayt, -q) 819200
gerçek zamanlı öncelik (-r) 0
yığın boyutu (kbyte, -s) 8192
cpu süresi (saniye, -t) sınırsız
maksimum kullanıcı işlemi (-u) 64000
sanal bellek (kbyte, -v) sınırsız
dosya kilitleri (-x) sınırsız

Gördüğünüz gibi, şişirilebilir bir şekilde hepsi istediğimiz sınırlara ayarlandı.

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.