Soru Ubuntu'da Neo4j'nin maksimum dosya açık limiti (ulimit) nasıl artırılır?


Şu anda ulimit -n gösterileri 10000. Onu artırmak istiyorum 40000. "/Etc/sysctl.conf" dosyasını düzenledim ve fs.file-max=40000. Ayrıca düzenledim /etc/security/limits.conf ve güncellenmiş sert ve yumuşak değerler. Ama hala ulimit gösteriyor 10000. Tüm bu değişiklikleri yaptıktan sonra dizüstü bilgisayarımı yeniden başlattım. Root şifresine eriştim.

usr_name@usr_name-lap:/etc$ /sbin/sysctl fs.file-max
fs.file-max = 500000

Aşağıdaki satırları eklendi /etc/security/limits.conf -

*     soft    nofile          40000
*     hard    nofile          40000

Aşağıdaki satırı da ekledim /etc/pam.d/su-

session    required   pam_limits.so

Diğer forumlarda verilen her yolu denedim, ancak maksimum limite kadar ulaşabiliyorum. 10000bunun ötesinde değil. Sorun ne olabilir?

Bu değişikliği yapıyorum çünkü neo4j maksimum açık dosya sınırları atar hatalara ulaştı.


76
2018-02-02 19:58


Menşei


Doğru yaptın, sadece sistemi yeniden başlatın ve her şey işe yarayacak: sudo ulimit -n 40000 - 0x90
@ 0x90 Sistemi yeniden başlattım. Ama o zaman bile değişmiyor. - theharshest
Ubuntu'ya özgü olması, muhtemelen aslında askubuntu.com'a aittir; benzer bir soru burada: askubuntu.com/questions/162229/... - Lambart
serverfault.com/questions/610130/... - Ciro Santilli 新疆改造中心 六四事件 法轮功
/etc/security/limits.conf dosyasına eklendikten sonra, hangi hizmetin yürürlüğe girmesi için yeniden başlatılması gerekiyor? - Ashish Karpe


Cevaplar:


Debian kullanıyorum ama bu çözüm Ubuntu ile iyi çalışmalı.
Bir satır eklemelisin Neo4j hizmet senaryo.
İşte yaptığım şey:

nano /etc/init.d/neo4j-service
Eklemek " ulimit –n 40000 »Hemen önce start-stop-daemon hattı içinde do_start bölümü

Sürüm 2.0 Enterprise sürümü kullanıyorum. Umarım bu size yardımcı olur.


8
2018-02-03 19:31



FWIW, Ubuntu Server 14.04 üzerinde böyle bir betik yoktur. Çözümüm bu soruda bulundu (ve lornix'in cevabı): askubuntu.com/questions/162229/... - kısaca, düzenlemeniz gerekiyor /etc/security/limits.conf ve /etc/pam.d/common-session* - Lambart
Orijinal sorgunun geçerken neo4j'den bahsettiğini görüyorum. Ubuntu ile hiçbir ilgisi olmadığı için sorunun konusuyla ilgisi var gibi görünüyor. - Lambart
Ubuntu 14.04'te gerçekten bir /etc/init.d/neo4j-service dosya ve Martin Larivière haklı. uname -n 40000 sorunu çözer. Ubuntu Server ve Ubuntu arasındaki farkları bilmiyorum, bu yüzden belki de haklısınız, bunu sadece Martin'in yazdığı şeyin sorunu Ubuntu 14.04 ile çözdüğünü açıklığa kavuşturmak için ekliyorum. - Grégoire C
@ Labart, neo4j servisi durumunda, common-session-* hile işe yaramaz, çünkü neo4j servisi temel alınmıştır start-stop-daemon ve start-stop-daemon PAM'den hiç faydalanmıyor. Tek çözüm gerçekten bir açıklık eklemek ulimit -n xxx init betiğinde arayın. - David Ammouial
Bu bir çözüm değil, bu bir bandaid. - Tim Wachter


Yaptığınız şey kök kullanıcı için çalışmaz. Belki de hizmetlerinizi root olarak kullanıyorsunuz ve bu nedenle değişikliği görmüyorsunuz.

Kök kullanıcı için ulimit artırmak için * köke göre. * kök kullanıcı için geçerli değildir. Dinlenme, seninle aynı. Burada tekrar alıntı yapacağım.

Aşağıdaki satırları dosyaya ekleyin: /etc/security/limits.conf

root soft  nofile 40000

root hard  nofile 40000

Ve sonra dosyaya aşağıdaki satırı ekleyin: /etc/pam.d/common-session

session required pam_limits.so

Bu, kök kullanıcı için ulimit'i güncelleyecektir. Yorumlarda belirtildiği gibi, değişikliği görmek için yeniden başlatmanız bile gerekmeyebilir.


82
2018-06-21 08:32



Yeni sınırın yürürlüğe girmesi için yeniden başlatmanız gerekmez. /Etc/pam.d/common-session dosyasını düzenleme noktası, yeni bir oturumun oluşturulmasının, dosyaların işlenmesiyle ilgili sınırlamalara neden olacağı şekildedir. - Christopher Smith
Bu prosedür çalışır. Yeniden başlatma gerekli değildir. Sadece oturumu kapat ve sonucu görmek için tekrar giriş yap. - Bill Butler
ubunutu için benim için çalışmadı 14.04 - Dejell
Neo4j servisi veya herhangi bir diğer servis durumunda start-stop-daemon, common-session-* hile işe yaramaz çünkü start-stop-daemon PAM'den hiç faydalanmıyor. Açık eklemekten başka bir yolu yoktur. ulimit -n xxx Hizmet başlamadan önce init betiğinde bir yere çağrı yapın. - David Ammouial
Ubuntu 16.04.1 LTS üzerinde güzel çalıştı - Andrew T Finnell


1) sysctl kontrol edin file-max limiti:

$ cat /proc/sys/fs/file-max

Limit istenilen değerden daha düşükse, sysctl.conf ve bu satırı dosya sonunda ekleyin:

fs.file-max = 65536

Son olarak başvur sysctl sınırları:

$ sysctl -p 

2) Düzenle /etc/security/limits.conf ve aşağıda belirtilenleri ekleyin

* soft     nproc          65535    
* hard     nproc          65535   
* soft     nofile         65535   
* hard     nofile         65535

Bu sınırlar için geçerli olmayacak root değiştirmek isterseniz kullanıcı root Bunu açıkça yapmanız gereken sınırlar:

root soft     nofile         65535   
root hard     nofile         65535
...

3) Sistemi yeniden başlatın veya sonuna aşağıdaki satırı ekleyin /etc/pam.d/common-session:

session required pam_limits.so

Çıkış yap ve tekrar giriş yap.

4) Yumuşak limitleri kontrol edin:

$ ulimit -a

ve sert limitler:

$ ulimit -Ha
....

open files                      (-n) 65535

Referans : http://ithubinfo.blogspot.in/2013/07/how-to-increase-ulimit-open-file-and.html


62
2017-07-17 06:37



Yaptığınız ve geri kaydettiğinizden emin olun, değişikliklerinizi yansıtabilir, eğer root kullanıcısıyla kontrol etmiyorsanız, ubuntu için bunu yapabilirsiniz. gnome-session-quit - Mayank Saxena
/ proc / sys / fs / file-max Sistem tarafından izin verilen MAX nofile DEĞİLDİR !!! Örneğin, sistemimde varsayılan olarak 1528702 olarak ayarlanmıştır. Limit.conf'daki yumuşak / sert sınırlar için bu değere ayarlanması, kullanıcının 1024'ten itibaren sınırlarını yükseltmesine izin vermez. Limit.conf'u çok daha tutucu olan bir şeye ayarlamak zorundaydım. 256 * 1024 = 262144 ve son olarak ulimit -a düzenli bir kullanıcı için aynı şeyi gösteriyor. - sabujp


Aynı sorunu yaşıyordum ve girişleri ekleyerek çalışmak için var /etc/security/limits.d/90-somefile.conf. Limitleri görmek için ssh oturumundan tamamen çıkıp tekrar giriş yapmam gerektiğini unutmayın.

Bir hizmeti çalıştıran belirli bir kullanıcının sınırını ayarlamak istedim, ancak oturum açtığım kullanıcı için ayarlanan limiti aldığım anlaşılıyor. İşte, ulimit'in doğrulanmış kullanıcıya değil, etkin kullanıcılara göre nasıl ayarlandığını gösteren bir örnek:

$ sudo cat /etc/security/limits.d/90-nofiles.conf
loginuser    soft    nofile   10240
loginuser    hard    nofile   10240
root         soft    nofile   10241
root         hard    nofile   10241
serviceuser  soft    nofile   10242
serviceuser  hard    nofile   10242

$ whoami
loginuser
$ ulimit -n
10240
$ sudo -i
# ulimit -n
10240    # loginuser's limit
# su - serviceuser
$ ulimit -n
10240    # still loginuser's limit.

Bir * tüm kullanıcılar için bir artış belirtmek. Hizmeti, giriş yaptığım kullanıcı olarak yeniden başlatırsam ve eklediğimde ulimit -n init betiğine, ilk giriş kullanıcı limitlerinin yerinde olduğunu görüyorum. Bir sistem önyükleme sırasında hangi kullanıcı limitlerinin kullanıldığını veya çalışmakta olduğum hizmetin gerçek nofile limitinin ne olduğunu belirleme şansım olmadı (start-stop-daemon ile başlatılan).

Şu an için çalışan 2 yaklaşım var:

  1. start-stop-daemon'dan hemen önce init betiğine bir ulimit ayarı ekleyin.
  2. Güvenlik dosyasında joker karakter veya daha geniş ulimit ayarları.

3
2017-10-03 09:03



ne yaptığını yaptığım zaman whoami) İlk önce 1024, sonra 65536 (root için), ardından 65536 kullanıcısıyım. Ama ilki aynı kullanıcıydı. Bunun için bir açıklamanız var mı? - Danielson
Kulağa tuhaf geliyor. Kullanıcıdan kök ve kullanıcıya nasıl geçiş yaparsınız? Dosyayı ayarladıktan sonra tamamen çıktınız mı? Önceden bir önbelleğe alınmış oturumda olabilirsiniz ve daha sonra kullanıcıya nasıl geri döndüğünüze bağlı olarak yeni bir oturum açabilirsiniz. - Brett
Emin olmak için yeniden başlatmaya devam ediyorum. Ayrıca denendi /etc/sysctl.conf -> fs.file-max = 1000000 tüm kullanıcılar için dünya çapında tamir etmeli, sonuç yok. Bir süreç beni görmezden geliyor gibi. Kullanıcıdan root 'a, kullanıcı gibi root -> kullanıcısını kullanarak root kullanıcısına geçiyorum. su - my_user_name. Hangi sistem, o kullanıcı için ne kullanması gerektiğini biliyor, ama değil ... - Danielson


İnit betiğini değiştirebilirsiniz neo4j yapmak ulimit -n 40000 çalıştırmadan önce neo4j.

Ancak, yardım edemem ama yanlış bir ağaç havlıyorsun. does neo4j yasal olarak 10.000'den fazla açık dosya tanımlayıcısına mı ihtiyacınız var? Bu bir hataya çok benziyor neo4j ya da onu kullanma şekliniz. Bunu ele almaya çalışırdım.


2
2018-02-02 23:31



ben başlarım neo4j kullanma neo4j start. Bunun için init betiğini nereden bulabilirim? - theharshest
yazmayı dene ulimit -n 40000 önce neo4j start - abligh


Bunu çalışmak için çok fazla sorun yaşıyorum.

Aşağıdakileri kullanmak, kullanıcı izniniz ne olursa olsun onu güncellemenize izin verir.

sudo sysctl -w fs.inotify.max_user_watches=100000

Düzenle

Bunu başka bir kullanıcı tarafından başka bir stackexchange sitesinde de gördüm (hem iş hem de bu sürüm) kalıcı olarak geçici olarak değil, sistem ayarını günceller):

echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf; 
sudo sysctl -p

2
2017-07-10 15:41





Bu komutu çalıştırmayı deneyin. *_limits.conf altında dosya /etc/security/limits.d

echo "* soft nofile 102400" > /etc/security/limits.d/*_limits.conf && echo "* hard nofile 102400" >> /etc/security/limits.d/*_limits.conf

Sadece terminalden çıkıp tekrar giriş yapın ve doğrulayın ulimit -n * kullanıcılar için ayarlanacak


2
2017-07-29 07:36



Kolay ve yardımsever cevap. - sumanth
Teşekkürler @sumanth, Size yardımcı olmaktan mutlu. - Mahattam


tl; dr hem yumuşak hem de sert limitleri ayarladı

Eminim istenen şekilde çalışıyor ama eminim ki onu buraya ekleyeceğim. Tamlık için sınır burada ayarlanır (sözdizimi için aşağıya bakınız): /etc/security/limits.conf

some_user       soft    nofile          60000
some_user       hard    nofile          60000

ve /etc/pam.d/common-session dosyasında aşağıdakilerle etkinleştirilir:

session required pam_limits.so

Sadece zor sınırı belirlerseniz, ulimit -a varsayılanı gösterecek (1024): Eğer sadece yumuşak sınırı belirlerseniz ulimit -a gösterecektir (4096)

İkisini de ayarlarsanız ulimit -a yumuşak limiti gösterecektir (tabii ki sert limite kadar)


2
2017-09-12 00:51





Ben böyle yaptım

echo "NEO4J_ULIMIT_NOFILE=50000" >> neo4j
mv neo4j /etc/default/

2
2017-07-23 14:35