it-swarm.com.de

Wie kann man das maximale Dateiöffnungslimit (ulimit) von Neo4j in Ubuntu erhöhen?

Derzeit zeigt ulimit -n10000. Ich möchte es auf 40000 Erhöhen. Ich habe "/etc/sysctl.conf" bearbeitet und fs.file-max=40000 Eingefügt. Ich habe auch /etc/security/limits.conf Bearbeitet und harte und weiche Werte aktualisiert. Trotzdem zeigt ulimit 10000. Nach all diesen Änderungen habe ich meinen Laptop neu gestartet. Ich habe Zugriff auf das root-Passwort.

[email protected]_name-lap:/etc$ /sbin/sysctl fs.file-max
fs.file-max = 500000

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

*     soft    nofile          40000
*     hard    nofile          40000

Ich habe auch folgende Zeile in /etc/pam.d/su Hinzugefügt -

session    required   pam_limits.so

Ich habe alle Möglichkeiten ausprobiert, die in anderen Foren angegeben wurden, aber ich kann ein Maximum von 10000 Erreichen, nicht darüber hinaus. Woran kann das liegen?

Ich nehme diese Änderung vor, weil neo4j Den Fehler "Maximale Anzahl offener Dateien erreicht" auslöst.

76
theharshest

Ich benutze Debian, aber diese Lösung sollte mit Ubuntu gut funktionieren.
Sie müssen eine Zeile in das Skript neo4j-service einfügen.
Folgendes habe ich getan:

nano /etc/init.d/neo4j-service
Fügen Sie "limit –n 400" kurz vor der Start-Stop-Daemon-Zeile im do_start-Abschnitt ein

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

8

Was Sie tun, funktioniert für den Root-Benutzer nicht. Möglicherweise führen Sie Ihre Dienste als Root aus, und daher können Sie die Änderung nicht erkennen.

Um das ulimit für root-Benutzer zu erhöhen, sollten Sie * Durch root ersetzen. * Gilt nicht für Rootbenutzer. Ruhe ist das gleiche wie du. Ich werde es hier noch einmal zitieren.

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

root soft  nofile 40000

root hard  nofile 40000

Fügen Sie dann folgende Zeile in die Datei ein: /etc/pam.d/common-session

session required pam_limits.so

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

82
Sambhav Sharma

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

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

Wenn der Grenzwert unter Ihrem gewünschten Wert liegt, öffnen Sie sysctl.conf Und fügen Sie diese Zeile am Ende der Datei hinzu:

fs.file-max = 65536

Wenden Sie abschließend sysctl Limits an:

$ sysctl -p 

2) Bearbeiten Sie /etc/security/limits.conf Und fügen Sie unten das erwähnte hinzu

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

Diese Beschränkungen gelten nicht für root Benutzer. Wenn Sie root Beschränkungen ändern möchten, müssen Sie dies explizit tun:

root soft     nofile         65535   
root hard     nofile         65535
...

3) Starten Sie das System neu oder fügen Sie folgende Zeile am Ende von /etc/pam.d/common-session Hinzu:

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

63
minhas23

Ich hatte das gleiche Problem und brachte es zum Laufen, indem ich Einträge zu /etc/security/limits.d/90-somefile.conf Hinzufügte. Beachten Sie, dass ich mich vollständig von der SSH-Sitzung abmelden und dann wieder anmelden musste, um zu sehen, dass die Grenzwerte funktionieren.

Ich wollte das Limit für einen bestimmten Benutzer festlegen, der einen Dienst ausführt, aber es scheint, dass ich das Limit erhalten habe, das für den Benutzer festgelegt wurde, unter dem ich mich anmeldete. Hier ist ein Beispiel, um zu zeigen, wie das ulimit basierend auf dem authentifizierten Benutzer und nicht auf dem effektiven Benutzer 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.

Mit einem * Können Sie eine Erhöhung für alle Benutzer festlegen. Wenn ich den Dienst als angemeldeter Benutzer neu starte und dem Init-Skript ulimit -n Hinzufüge, werden die Grenzwerte des anfänglichen Anmeldebenutzers angezeigt. Ich hatte keine Gelegenheit zu überprüfen, welche Benutzerlimits während eines Systemstarts verwendet werden oder wie hoch das tatsächliche Dateilimit für den Dienst ist, den ich ausführe (der mit start-stop-daemon gestartet wird).

Es gibt zwei Ansätze, die derzeit funktionieren:

  1. fügen Sie dem Init-Skript kurz vor dem Start-Stop-Daemon eine ulimit-Anpassung hinzu.
  2. platzhalter oder umfangreichere ulimit-Einstellungen in der Sicherheitsdatei.
3
Brett

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

Mit dem folgenden Befehl können Sie es unabhängig von Ihrer Benutzerberechtigung aktualisieren.

Sudo sysctl -w fs.inotify.max_user_watches=100000

Bearbeiten

Ich habe dies gerade von einem anderen Benutzer auch auf einer anderen Stack-Exchange-Site gesehen (beide funktionieren, aber diese Version permanent aktualisiert die Systemeinstellungen und nicht vorübergehend):

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

stellen Sie sowohl die weichen als auch die harten Grenzen ein

Ich bin sicher, es funktioniert wie beabsichtigt, aber ich werde es hier nur für den Fall hinzufügen. Der Vollständigkeit halber wird das Limit hier eingestellt (siehe unten für die Syntax): /etc/security/limits.conf

some_user       soft    nofile          60000
some_user       hard    nofile          60000

und mit folgendem Befehl in /etc/pam.d/common-session aktiviert:

session required pam_limits.so

Wenn Sie nur das harte Limit festlegen, wird ulimit -a zeigt den Standardwert an (1024): Wenn Sie nur den Soft-Wert festlegen, wird der Grenzwert ulimit -a angezeigt (4096).

Wenn Sie beide setzen, ulimit -a zeigt das weiche Limit an (natürlich bis zum harten Limit)

2
jorfus

Ich habe es so gemacht

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

Sie können das Init-Skript für neo4j Ändern, um ulimit -n 40000 Auszuführen, bevor Sie neo4j Ausführen.

Ich kann jedoch nicht anders, als das Gefühl zu haben, Sie bellen den falschen Baum an. Benötigt neo4j Zu Recht mehr als 10.000 offene Dateideskriptoren? Dies klingt sehr nach einem Fehler in neo4j Oder der Art, wie Sie ihn verwenden. Ich würde versuchen, das anzusprechen.

2
abligh

Versuchen Sie diesen Befehl auszuführen, es wird ein *_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 wird für * Benutzer festgelegt

2
Mahattam

ULIMIT-Konfiguration:

  1. Loggen Sie sich mit root ein
  2. vi security/limits.conf
  3. Geben Sie unten ein

    Ulimit Konfigurationsstart für webseite Benutzer

    website   soft   nofile    8192
    website   hard   nofile    8192
    website   soft   nproc    4096
    website   hard   nproc    8192
    website   soft   core    unlimited
    website   hard   core    unlimited
    
  4. Machen Sie unten einen Eintrag für ALL USER

    Ulimit-Konfiguration für jeden Benutzer

    *   soft   nofile    8192
    *   hard   nofile    8192
    *   soft   nproc    4096
    *   hard   nproc    8192
    *   soft   core    unlimited
    *   hard   core    unlimited
    
  5. Nach dem Ändern der Datei muss sich der Benutzer abmelden und erneut anmelden, um die neuen Werte anzuzeigen.

1