Erlang/OTP 17でEjabberd 15.04を実行していて、ejabberdを実行しているEC2 Amazonの4つすべてのインスタンスでUbuntu [64-bit]を使用しています。 Ejabberdはソースからインストールされました。私は65,535ファイルディスクリプタと、次の構成とそれを構成したEjabberdの "Failed TCP accept:emfile"
:
ERL_MAX_PORTS =36万
ERL_PROCESSES = 15,000,000
ERL_MAX_ETS_TABLES =10万
ことだと突然、サーバーは機能しなくなり、数百回ログに記録されました。
2016年5月9日13:22:45.901 [エラー] < 0.397.0> @ejabberd_listener:受け入れる:317(#Port < 0.4197>)は、TCPは受け入れませんでした:
EMFILE私は自分自身のモジュールと実行を行っています(Amazonの)Elastic Load Balancerの背後にある4つのerlangノードのクラスタ内でejabberdを実行します。マシンにはそれぞれ4コアと30ギガバイトのRAMがあります。 ロスターモジュールをODBC(MariaDB、mysqlと似ています)に移行しました。そして、80kのユーザーが同時に接続されています。
私は、ファイル記述子が十分に高く、プロセスとポートもerlangだと思います。 このエラーは突然現れ、サーバーは3週間正常に動作しました。おそらく原因はmysqlと関係がありますか?あなたが原因が何であるか知っていれば、私はとても幸せになるでしょう。
ありがとうございます。
セットNOFILE(開いているファイルの最大数)#に –