Derzeit ulimit -n
zeigt 10000
. Ich möchte es erhöhen 40000
. Ich habe "/etc/sysctl.conf" bearbeitet und gesetzt fs.file-max=40000
. Ich habe auch /etc/security/limits.conf
harte und weiche Werte bearbeitet und aktualisiert. Aber immer noch ulimit zeigt 10000
. Nachdem ich all diese Änderungen vorgenommen hatte, startete ich meinen Laptop neu. Ich habe Zugriff auf das Root-Passwort.
usr_name@usr_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 hinzugefügt in /etc/pam.d/su
-
session required pam_limits.so
Ich habe alle möglichen Möglichkeiten ausprobiert, wie in anderen Foren angegeben, aber ich kann eine maximale Grenze von erreichen 10000
, nicht darüber hinaus. Was kann das Problem sein?
Ich nehme diese Änderung vor, weil neo4j
der maximale Fehler beim Öffnen der Dateilimits erreicht wird.
sudo ulimit -n 40000
Antworten:
Ich benutze Debian, aber diese Lösung sollte gut mit Ubuntu funktionieren.
Sie müssen eine Zeile im neo4j-service- Skript hinzufügen .
Folgendes habe ich getan:
Beachten Sie, dass ich die Version 2.0 Enterprise Edition verwende. Hoffe das wird dir helfen.
quelle
/etc/security/limits.conf
und/etc/pam.d/common-session*
/etc/init.d/neo4j-service
Datei und Martin Larivière hat Recht, das Einfügenuname -n 40000
löst das Problem. Ich kenne die Unterschiede zwischen Ubuntu Server und Ubuntu nicht. Vielleicht haben Sie auch Recht. Ich füge dies hinzu, um zu verdeutlichen, dass das, was Martin geschrieben hat, das Problem mit einfachem Ubuntu 14.04 löst.common-session-*
Trick nicht, da neo4j-service auf PAM basiertstart-stop-daemon
und diesesstart-stop-daemon
überhaupt nicht nutzt. Die einzige Lösung besteht in der Tat darin,ulimit -n xxx
dem Init-Skript einen expliziten Aufruf hinzuzufügen .Was Sie tun, funktioniert nicht für Root-Benutzer. Möglicherweise führen Sie Ihre Dienste als Root aus und sehen die Änderung daher nicht.
Um das Ulimit für Root-Benutzer zu erhöhen, sollten Sie das
*
durch Root ersetzen .*
gilt nicht für Root-Benutzer. 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
Fügen Sie dann die folgende Zeile in die Datei ein:
/etc/pam.d/common-session
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.
quelle
start-stop-daemon
, der verwendetcommon-session-*
wird, funktioniert der Trick nicht, dastart-stop-daemon
PAM überhaupt nicht genutzt wird. Es gibt keine andere Möglichkeit, alsulimit -n xxx
irgendwo im Init-Skript einen expliziten Aufruf hinzuzufügen, bevor der Dienst gestartet wird.1) Überprüfen Sie das Systemlimit
file-max
:Wenn der Grenzwert unter Ihrem gewünschten Wert liegt, öffnen Sie das
sysctl.conf
und fügen Sie diese Zeile am Ende der Datei hinzu:Wenden Sie schließlich
sysctl
Grenzwerte an:2) Bearbeiten
/etc/security/limits.conf
und fügen Sie unten hinzuDiese Grenzwerte gelten nicht für
root
Benutzer. Wenn Sie dieroot
Grenzwerte ändern möchten, müssen Sie dies explizit tun:3) Starten Sie das System neu oder fügen Sie am Ende von folgende Zeile hinzu
/etc/pam.d/common-session
:Abmelden und erneut anmelden.
4) Überprüfen Sie die weichen Grenzwerte:
und harte Grenzen:
Referenz: http://ithubinfo.blogspot.in/2013/07/how-to-increase-ulimit-open-file-and.html
quelle
gnome-session-quit
Ich hatte das gleiche Problem und brachte es zum Laufen, indem ich Einträge hinzufügte
/etc/security/limits.d/90-somefile.conf
. Beachten Sie, dass ich mich vollständig von der SSH-Sitzung abmelden und mich dann wieder anmelden musste, damit 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, als den ich mich angemeldet habe. Hier ist ein Beispiel, um zu zeigen, wie das ulimit basierend auf dem authentifizierten Benutzer und nicht auf dem effektiven Benutzer festgelegt wird:
Mit a können Sie
*
eine Erhöhung für alle Benutzer angeben. Wenn ich den Dienst als der Benutzer, den ich angemeldet habe, neu starte undulimit -n
zum Init-Skript hinzufüge , sehe ich, dass die Grenzen des anfänglichen Anmeldebenutzers vorhanden sind. Ich hatte keine Gelegenheit zu überprüfen, welche Benutzerlimits während eines Systemstarts verwendet werden, oder zu bestimmen, wie hoch das tatsächliche Nofile-Limit des von mir ausgeführten Dienstes ist (der mit dem Start-Stopp-Dämon gestartet wird).Derzeit funktionieren zwei Ansätze:
quelle
whoami
), bekomme ich zuerst 1024, dann 65536 (für root) und dann 65536 für den Benutzer. Aber der erste war der gleiche Benutzer. Haben Sie eine Erklärung dafür, ich bin verblüfft/etc/sysctl.conf
->fs.file-max = 1000000
sollte es global für alle Benutzer beheben, auch kein Ergebnis. Es ist, als würde mich ein Prozess ignorieren. Ich wechsle von Benutzer zu Root zu Benutzer, wie Sie beschrieben haben, von root -> user usingsu - my_user_name
. Was darauf hinweist, dass das System weiß, was es für diesen Benutzer verwenden soll, aber nicht ...Sie können das Init-Skript ändern,
neo4j
um diesulimit -n 40000
vor dem Ausführen zu tunneo4j
.Ich kann jedoch nicht anders, als das Gefühl zu haben, dass Sie den falschen Baum bellen. Benötigen Sie
neo4j
legitimerweise mehr als 10.000 offene Dateideskriptoren? Dies klingt sehr nach einem Fehlerneo4j
oder der Art und Weise, wie Sie ihn verwenden. Ich würde versuchen, das anzusprechen.quelle
neo4j
benutzenneo4j start
. Wo finde ich das Init-Skript dafür?ulimit -n 40000
vorher zuneo4j start
Ich habe viele Probleme damit, das zum Laufen zu bringen.
Wenn Sie Folgendes verwenden, 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 Stackexchange-Site gesehen (beide funktionieren, aber diese Version aktualisiert die Systemeinstellungen permanent und nicht vorübergehend):
quelle
Führen Sie diesen Befehl aus, um eine
*_limits.conf
Datei unter zu erstellen/etc/security/limits.d
Verlassen Sie einfach das Terminal und melden Sie sich erneut an und überprüfen
ulimit -n
Sie, ob es für * Benutzer festgelegt istquelle
Setzen Sie sowohl die weichen als auch die harten Grenzen
Ich bin sicher, dass es wie beabsichtigt funktioniert, aber ich werde es hier für alle Fälle hinzufügen. Der Vollständigkeit halber wird hier das Limit festgelegt (Syntax siehe unten): /etc/security/limits.conf
und mit folgendem in /etc/pam.d/common-session aktiviert:
Wenn Sie nur das harte Limit festlegen,
ulimit -a
wird die Standardeinstellung (1024) angezeigt: Wenn Sie nur das weiche Limit festlegen, wird das Limit ulimit -a angezeigt (4096).Wenn Sie beide
ulimit -a
einstellen, wird das weiche Limit angezeigt (natürlich bis zum harten Limit).quelle
Ich habe es so gemacht
quelle
ULIMIT-Konfiguration:
Machen Sie unten Eintrag
Ulimit-Konfigurationsstart für Website- Benutzer
Machen Sie unten Eintrag für ALLE BENUTZER
Ulimit-Konfiguration für jeden Benutzer
Nach dem Ändern der Datei muss sich der Benutzer abmelden und erneut anmelden, um die neuen Werte anzuzeigen.
quelle