2016-05-09 5 views
0

Ich habe Ejabberd 15.04 mit Erlang/OTP 17 und Ubuntu [64-Bit] in allen meinen 4 Instanzen von EC2 Amazon, wo ich ejabberd laufen. Ejabberd wurde von der Quelle installiert."Failed TCP akzeptieren: emfile" in Ejabberd

ich es mit 65.535 Filedeskriptoren und die folgende Konfiguration konfiguriert haben:

ERL_MAX_PORTS = 360.000

ERL_PROCESSES = 15.000.000

ERL_MAX_ETS_TABLES = 100.000

Die Sache ist, dass plötzlich die Server funktioniert nicht mehr und ich fand das in den Protokollen, Hunderte von Malen:

2016.05.09 13: 22: 45,901 [Fehler] < 0.397.0> @ejabberd_listener: akzeptieren: 317 (#Port < 0,4197>) konnte nicht TCP akzeptieren: emfile

Ich habe meine eigene Module und laufen aus Ejabberd in einem Cluster von 4 Erlang Knoten, hinter einem Elastic Load Balancer (von Amazon). Die Maschinen haben 4 Kerne und je 30 GB RAM. Ich habe Roster-Modul zu ODBC (MariaDB, ähnlich wie MySQL) migriert. Und 80k Benutzer sind gleichzeitig verbunden.

Ich denke, dass die Datei-Deskriptoren sind hoch genug und erlang Prozesse und Häfen zu. Der Fehler erschien plötzlich, die Server funktionierten für 3 Wochen. Vielleicht hat die Ursache mit MySQL zu tun? Wenn Sie bitte wissen, was die Ursache sein könnte, wäre ich sehr dankbar.

Vielen Dank im Voraus.

+0

Satz nofile (max Anzahl der geöffneten Dateien) in # /etc/security/limits.conf –

Antwort

0

Sie müssen Grenze offener Dateien erhöhen, können Sie aktuelle Maximum in Erlang erhalten von:

proplists:get_value(max_fds, erlang:system_info(check_io)). 

Wenn Sie als Wert nicht gleiche ist gesetzt in OS und Software von einem Emporkömmling Skript gestartet, stellen Sie sicher, Dateideskriptors Limit in Emporkömmling Skript gesetzt durch limit stanza mit:

limit nofile 65535 65535 
+0

ich überprüft haben, dass und es ist in Ordnung. Das Problem besteht weiterhin. – lbernal