Frage Wie kann man die maximale Dateiöffnungsgrenze (ulimit) von Neo4j in Ubuntu erhöhen?


Zur Zeit ulimit -n zeigt an 10000. Ich möchte es erhöhen auf 40000. Ich habe "/etc/sysctl.conf" bearbeitet und gestellt fs.file-max=40000. Ich habe auch bearbeitet /etc/security/limits.conf und aktualisierte harte und weiche Werte. Aber immer noch ulimit zeigt 10000. Nachdem ich all diese Änderungen vorgenommen hatte, startete ich meinen Laptop neu. Ich habe Zugriff auf root-Passwort.

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

Folgende Zeilen hinzugefügt in /etc/security/limits.conf -

*     soft    nofile          40000
*     hard    nofile          40000

Ich fügte auch folgende Zeile hinzu /etc/pam.d/su-

session    required   pam_limits.so

Ich habe jeden möglichen Weg ausprobiert, wie es in anderen Foren gegeben ist, aber ich kann bis zu einer maximalen Grenze von erreichen 10000nicht darüber hinaus. Was kann das Problem sein?

Ich mache diese Änderung, weil neo4j löst maximale offene Dateigrenzen erreicht Fehler.


76
2018-02-02 19:58


Ursprung


Antworten:


Ich benutze Debian, aber diese Lösung sollte mit Ubuntu funktionieren.
Sie müssen eine Zeile in der hinzufügen neo4j-Service Skript.
Hier ist was ich getan habe:

nano /etc/init.d/neo4j-service
Hinzufügen " ulimit -n 40000 »Kurz vor dem Start-Stop-Daemonzeile in dem Abschnitt "do_start"

Beachten Sie, dass ich Version 2.0 Enterprise Edition verwende. Hoffe das wird dir helfen.


8
2018-02-03 19:31



Was Sie tun, wird nicht für Root-Benutzer funktionieren. Vielleicht führen Sie Ihre Dienste als root aus, und daher können Sie die Änderung nicht sehen.

Um die ulimit für root-Benutzer zu erhöhen, sollten Sie die ersetzen * von root. * gilt nicht für Root-Benutzer. Der Rest ist der gleiche wie du. Ich werde es hier erneut zitieren.

Fügen Sie der Datei die folgenden Zeilen hinzu: /etc/security/limits.conf

root soft  nofile 40000

root hard  nofile 40000

Und dann folgende Zeile in die Datei einfügen: /etc/pam.d/common-session

session required pam_limits.so

Dadurch wird das ulimit für root-Benutzer aktualisiert. Wie in den Kommentaren erwähnt, müssen Sie möglicherweise nicht einmal neu starten, um die Änderung zu sehen.


82
2018-06-21 08:32



1) Überprüfen Sie sysctl file-max Grenze:

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

Wenn das Limit niedriger als Ihr gewünschter Wert ist, öffnen Sie die sysctl.conf und füge diese Zeile am Ende der Datei hinzu:

fs.file-max = 65536

Abschließend bewerben sysctl Grenzen:

$ sysctl -p 

2) Bearbeiten /etc/security/limits.conf und füge unter das Erwähnte hinzu

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

Diese Grenzen gelten nicht für root Benutzer, wenn Sie ändern möchten root Grenzen müssen Sie das explizit machen:

root soft     nofile         65535   
root hard     nofile         65535
...

3) System neu starten oder folgende Zeile am Ende hinzufügen /etc/pam.d/common-session:

session required pam_limits.so

Abmelden und erneut anmelden.

4) Überprüfen Sie die weichen Grenzen:

$ ulimit -a

und harte Grenzen:

$ ulimit -Ha
....

open files                      (-n) 65535

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


62
2017-07-17 06:37



Ich hatte das gleiche Problem und habe es zum Laufen gebracht, indem ich Einträge hinzugefügt habe /etc/security/limits.d/90-somefile.conf. Beachten Sie, dass ich mich vollständig aus der SSH-Sitzung ausloggen musste, um die Grenzwerte zu sehen, und loggen Sie sich dann wieder ein.

Ich wollte das Limit für einen bestimmten Benutzer festlegen, der einen Dienst ausführt, aber es scheint, dass ich das Limit für den Benutzer erhalten habe, bei dem ich mich angemeldet habe. Hier ist ein Beispiel, um zu zeigen, wie das ulimit auf der Basis eines authentifizierten Benutzers und nicht des effektiven Benutzers festgelegt wird:

$ 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.

Sie können ein verwenden * um eine Erhöhung für alle Benutzer anzugeben. Wenn ich den Dienst als angemeldeter Benutzer neu starte und hinzufüge ulimit -n In dem Init-Skript sehe ich, dass die Grenzen des anfänglichen Login-Benutzers vorhanden sind. Ich hatte keine Chance zu überprüfen, welche Benutzerlimits während eines Systemstarts verwendet werden oder ob das tatsächliche Nofile-Limit des Dienstes ist, den ich gerade betreibe (was mit Start-Stop-Daemon gestartet wird).

Es gibt zwei Ansätze, die momentan funktionieren:

  1. Fügen Sie dem init-Skript vor dem start-stop-Daemon eine ulimit-Anpassung hinzu.
  2. Platzhalter oder umfangreichere ulimit-Einstellungen in der Sicherheitsdatei.

3
2017-10-03 09:03



Sie könnten das Init-Skript für ändern neo4j zu tun ulimit -n 40000 vor dem Laufen neo4j.

Ich kann jedoch nicht anders, als zu fühlen, dass du den falschen Baum anbellst. Tut neo4j Benötigen Sie mehr als 10.000 offene Dateideskriptoren? Das hört sich sehr nach einem Bug an neo4j oder wie Sie es benutzen. Ich würde versuchen, das anzugehen.


2
2018-02-02 23:31



Ich habe große Schwierigkeiten damit, das zum Laufen zu bringen.

Wenn Sie Folgendes verwenden, können Sie es unabhängig von Ihren Benutzerberechtigungen aktualisieren.

sudo sysctl -w fs.inotify.max_user_watches=100000

Bearbeiten

Ich habe das von einem anderen Benutzer auch auf einer anderen Stackexchange-Site gesehen (beide funktionieren, aber diese Version) permanent aktualisiert die Systemeinstellung statt vorübergehend):

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

2
2017-07-10 15:41



Versuchen Sie, diesen Befehl auszuführen *_limits.conf Datei unter /etc/security/limits.d

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

Verlassen Sie einfach das Terminal und melden Sie sich erneut an und bestätigen Sie mit ulimit -n Es wird für * Benutzer festgelegt


2
2017-07-29 07:36



tl; dr setzt sowohl die weichen als auch die harten Grenzen

Ich bin sicher, es funktioniert wie beabsichtigt, aber ich werde es hier für alle Fälle hinzufügen. Zur Vollständigkeit wird hier die Grenze gesetzt (Syntax siehe unten): /etc/security/limits.conf

some_user       soft    nofile          60000
some_user       hard    nofile          60000

und aktiviert mit dem folgenden in /etc/pam.d/common-session:

session required pam_limits.so

Wenn Sie nur das harte Limit festlegen, ulimit -a zeigt den Standard (1024) an: Wenn Sie nur die Grenze setzen, wird ulimit -a angezeigt (4096)

Wenn Sie beide einstellen ulimit -a zeigt die weiche Grenze (bis zur harten Grenze natürlich)


2
2017-09-12 00:51