Os x terminal -, ssh -, und zu viele offene Dateien
Hallo Jungs : ich habe einige code, der ausgeführt wird, mehrere rest-Abfragen über eine Verbindung, ssh weitergeleitet werden an eine AWS-Maschine (fyi: diese Abfragen sind der Kollision mit einem Solr-server läuft auf diesem Rechner), und die Abfragen ausführen, die gegen meine localhost (die an die AWS-Instanz).
Den code zunächst läuft Super abrufen von Daten wie nötig, aber nach eine Weile läuft, wird der code Ständen (in eclipse).
In genau diesem moment, das terminal (also wo ich angefangen habe, meine ssh-tunnel) geht ganz gefroren ist, füllt sich mit dem String :
"accept : too many open files"
Weil dieser unendliche Druck ist nicht im Zusammenhang mit einem bash-terminal (d.h. ich kann nicht sagen, ob die ssh-Verbindung noch aktiv ist oder nicht, und es ist kein text, der anzeigt, welche shell im in... nur unpridled, unerbittliche print-Anweisungen) kann ich nicht sagen, ob es kommt von amazon, oder von meinem client terminal.
Möchte ich die Ursache für dieses Verhalten und lokalisieren Sie die Maschine, die verursacht meine terminal zu explodieren
Zu testen, welche der beiden Maschinen war, die den unendlichen Ausdrucke der Fehler, lief ich die ulimit-Befehl auf dem server... und gefunden , dass die maximale Anzahl von geöffneten Dateien erlaubt (auf der aws-server) wurde auch über der Menge der Dateien öffnen (bestimmt auch mit ulimit) zu einem bestimmten Zeitpunkt, während das client-Programm (von meiner ide) ausgeführt wird.
Habe ich den gleichen test auf meinem client , und fand keine signifikante Zunahme in der Anzahl der geöffneten Dateien.
Seite einige details : ich bin mit mehreren Hunderten von Abfragen in einen SOLR-server, der über 100GB an Daten in einem kurzen Zeitraum.
Hinweise auf, wie um zu bestimmen, warum meine sshd-mac-os-x-terminal liegt im sterben und unendlich drucken Sie diese Nachricht wäre potenziell sehr nützlich für mich. Natürlich, ob oder nicht Sie waren spezifisch für solr. Das heißt, irgendwelche Erkenntnisse, warum dies geschehen würde, wenn mit einem solr-Dienst kann auch helfen, um dieses problem zu lösen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du könntest versuchen Sie bei
ulimit
(via Terminal-Typ):Speziell, überprüfen Sie den Wert für
open files
. Auf meinem Rechner (OS X) meldet es 256. Vielleicht möchten Sie versuchen, eine Steigerung zu 512:Dies scheint für mich gearbeitet:
Dann starten Sie OS X.
https://superuser.com/questions/302754/increase-the-maximum-number-of-open-file-descriptors-in-snow-leopard
Gibt es nicht genug Informationen um sicher zu sein, aber es klingt wie
ssh
auf seine pro-Prozess-Datei-Deskriptor-Grenze beim Versuch, verbindungen zu akzeptieren, um die Weiterleitung der lokal-Buchse, die wiederum legt nahe, dass die bereits offenen verbindungen werden nicht geschlossen und in einer zeitgemäßen Weise. Sie können laufenssh
mit-d
zu sehen, die details der verbindungen und Trennungen; möchten Sie vielleicht, um zu erfassen Ihr stderr und ein Skript verwenden, um zu verfolgen die socket-Operationen wie werden Sie begraben werden in einer Menge von anderen debug-Informationen.Beachten Sie, dass
ssh
selbst einschränken kann seine offene Datei-Deskriptoren, die außerhalb der Standard-zur Vermeidung von denial-of-service-Angriffe auf Ihre weitergeleiteten port; ich sehe keinen Hinweis darauf in der Dokumentation, aber es ist die Art von Sache, die ich erwarten würde.oder
Dauerhaft ändern, verwenden Sie sudo, um Ihre Einstellungen in /etc/sysctl.conf (die Sie haben können, um zu erstellen), wie diese:
Hinweis - wählen Sie die Nummer auf eigene Gefahr
Folgender Befehl hat mir geholfen,