Dockerコンテナ内でejabberdを実行しています。長い間すべてが正常に機能していましたが、今日、1 時間ほど後に ejabberd がクラッシュすることを発見しました。これは、crash.log ファイルの重要な部分です。
/var/log/ejabberd/crash.log
--------------------------------------------------------------------------------
2016-12-27 16:00:25 =CRASH REPORT====
crasher:
initial call: disk_log:init/2
pid: <0.169.0>
registered_name: []
exception exit: {{{failed,{error,{file_error,"/opt/ejabberd/database/ejabberd@localhost/PREVIOUS.LOG",enoent}}},[{disk_log,reopen,2}]},[{disk_log,do_exit,4,[{file,"disk_log.erl"},{line,1188}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,237}]}]}
ancestors: [disk_log_sup,kernel_safe_sup,kernel_sup,<0.10.0>]
messages: []
links: [<0.135.0>]
dictionary: []
trap_exit: true
status: running
heap_size: 2586
stack_size: 27
reductions: 40032
neighbours:
2016-12-27 16:00:25 =SUPERVISOR REPORT====
Supervisor: {local,disk_log_sup}
Context: child_terminated
Reason: {{failed,{error,{file_error,"/opt/ejabberd/database/ejabberd@localhost/PREVIOUS.LOG",enoent}}},[{disk_log,reopen,2}]}
Offender: [{pid,<0.169.0>},{name,disk_log},{mfargs,{disk_log,istart_link,undefined}},{restart_type,temporary},{shutdown,1000},{child_type,worker}]
2016-12-27 16:00:25 =ERROR REPORT====
** gen_event handler mnesia_event crashed.
** Was installed in mnesia_event
** Last event was: {mnesia_system_event,{mnesia_fatal,"~p~n",[{error,{"Cannot rename disk_log file",latest_log,"/opt/ejabberd/database/ejabberd@localhost/PREVIOUS.LOG",{log_header,trans_log,"4.3","4.12.3",ejabberd@localhost,{1482,854424,897044}},{file_error,"/opt/ejabberd/database/ejabberd@localhost/PREVIOUS.LOG",enoent}}}],<<131,108,0,0,0,24,104,2,100,0,9,99,114,97,115,104,105,110,102,111,104,2,107,0,4,126,112,126,110,108,0,0,0,1,104,2,
......
クラッシュ エラー ログに基づくと、ログのローテーションを伴うものと思われます。
Cannot rename disk_log file",latest_log,"/opt/ejabberd/database/ejabberd@localhost/PREVIOUS.LOG
奇妙なことは、コンテナを再起動するたびに、すべてが正常に機能していることです。明らかに/opt/ejabberd/database/ejabberd@localhost/
、そこにあるすべてのファイルとファイルを含むディレクトリを確認できLATEST.LOG
ます。1時間ほどするとクラッシュし、ディレクトリも削除されても内部のすべて/opt/ejabberd/database/ejabberd@localhost/
が失われます。ejabberd@localhost
コンテナ内に入ると、ディレクトリを再度作成したり、ディレクトリ内の他のファイルを作成したりできません/opt/ejabberd/database/
。
$mkdir -p /opt/ejabberd/database/ejabberd@localhost
mkdir: cannot create directory ‘/opt/ejabberd/database/ejabberd@localhost’: No such file or directory
権限の問題ではないようです
$ls -lh /opt/ejabberd/
drwxr-xr-x 0 ejabberd ejabberd 0 Dec 27 15:09 backup
drwxr-xr-x 2 ejabberd ejabberd 4.0K Dec 27 15:09 conf
drwxr-xr-x 0 ejabberd ejabberd 0 Dec 27 16:00 database
drwxr-xr-x 5 ejabberd ejabberd 4.0K Dec 27 15:09 extauth
-rw-r--r-- 1 ejabberd ejabberd 0 Dec 27 15:09 first-start-done
-rwxr-xr-x 1 ejabberd ejabberd 747 Mar 2 2016 init.sh
drwxr-xr-x 15 ejabberd ejabberd 4.0K Jul 15 08:59 scripts
drwxr-xr-x 0 ejabberd ejabberd 0 Dec 27 16:00 ssl
drwxr-xr-x 0 ejabberd ejabberd 0 Dec 27 15:09 upload
私は以前にこれを持っていなかったと言わなければなりません.ejabberdを使用してdockerコンテナー内で同様のことを経験した人はいますか? この奇妙なエラーの原因について何か考えはありますか?
前もって感謝します