CouchDB 突然崩溃并出现 "Could not open file"错误

标签 couchdb

专家们,

我的 couchDB 安装遇到了一个令人惊讶的问题:从某个时刻到另一个时刻都无法发出请求,并且 couchDB 不再运行。

查看错误日志后发现以下堆栈跟踪(这些是第一个,后面有很多类似的)。上述数据库文件确实存在于指定目录中,并且具有正确的访问权限(couchdb:couchdb, 640)。

系统是FreeBSD 10.1-RELEASE-p16,couchdb 1.6.1

[Thu, 20 Aug 2015 13:37:29 GMT] [error] [<0.28818.72>] Could not open file /var/db/couchdb/db1/abc.couch: no such file or directory
[Thu, 20 Aug 2015 13:37:29 GMT] [error] [<0.25245.72>] Could not open file /var/db/couchdb/db1/abc.couch: no such file or directory
[Thu, 20 Aug 2015 13:50:45 GMT] [error] [<0.13142.73>] Could not open file /var/db/couchdb/db1/def.couch: no such file or directory
[Thu, 20 Aug 2015 13:52:29 GMT] [error] [<0.15770.73>] Could not open file /var/db/couchdb/db1/abc.couch: no such file or directory
[Thu, 20 Aug 2015 13:52:29 GMT] [error] [<0.17891.73>] Could not open file /var/db/couchdb/db1/abc.couch: no such file or directory
[Thu, 20 Aug 2015 13:59:47 GMT] [error] [<0.23972.73>] {error_report,<0.31.0>,
                        {<0.23972.73>,crash_report,
                         [[{initial_call,{couch_file,init,['Argument__1']}},
                           {pid,<0.23972.73>},
                           {registered_name,[]},
                           {error_info,
                            {exit,
                             {{badmatch,{error,eacces}},
                              [{couch_file,init,1,
                                [{file,"couch_file.erl"},{line,314}]},
                               {gen_server,init_it,6,
                                [{file,"gen_server.erl"},{line,328}]},
                               {proc_lib,init_p_do_apply,3,
                                [{file,"proc_lib.erl"},{line,239}]}]},
                             [{gen_server,init_it,6,
                               [{file,"gen_server.erl"},{line,352}]},
                              {proc_lib,init_p_do_apply,3,
                               [{file,"proc_lib.erl"},{line,239}]}]}},
                           {ancestors,[<0.25603.73>]},
                           {messages,[]},
                           {links,[#Port<0.1119512>,<0.25603.73>]},
                           {dictionary,[]},
                           {trap_exit,true},
                           {status,running},
                           {heap_size,376},
                           {stack_size,27},
                           {reductions,564}],
                          [{neighbour,
                            [{pid,<0.25603.73>},
                             {registered_name,[]},
                             {initial_call,{erlang,apply,2}},
                             {current_function,{gen,do_call,4}},
                             {ancestors,[]},
                             {messages,[]},
                             {links,[<0.85.0>,<0.23972.73>]},
                             {dictionary,[]},
                             {trap_exit,false},
                             {status,waiting},
                             {heap_size,610},
                             {stack_size,16},
                             {reductions,61}]}]]}}
[Thu, 20 Aug 2015 13:59:47 GMT] [error] [<0.23088.73>] httpd 500 error response:
 {"error":"error","reason":"{{badmatch,{error,eacces}},\n [{couch_file,init,1,[{file,\"couch_file.erl\"},{line,314}]},\n  {gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,328}]},\n  {proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,239}]}]}"}

[Thu, 20 Aug 2015 13:59:47 GMT] [error] [<0.26398.73>] {error_report,<0.31.0>,
                        {<0.26398.73>,crash_report,
                         [[{initial_call,{couch_file,init,['Argument__1']}},
                           {pid,<0.26398.73>},
                           {registered_name,[]},
                           {error_info,
                            {exit,
                             {{badmatch,{error,eacces}},
                              [{couch_file,init,1,
                                [{file,"couch_file.erl"},{line,314}]},
                               {gen_server,init_it,6,
                                [{file,"gen_server.erl"},{line,328}]},
                               {proc_lib,init_p_do_apply,3,
                                [{file,"proc_lib.erl"},{line,239}]}]},
                             [{gen_server,init_it,6,
                               [{file,"gen_server.erl"},{line,352}]},
                              {proc_lib,init_p_do_apply,3,
                               [{file,"proc_lib.erl"},{line,239}]}]}},
                           {ancestors,[<0.15629.73>]},
                           {messages,[]},
                           {links,[#Port<0.1119284>,<0.15629.73>]},
                           {dictionary,[]},
                           {trap_exit,true},
                           {status,running},
                           {heap_size,610},
                           {stack_size,27},
                           {reductions,573}],
                          [{neighbour,
                            [{pid,<0.15629.73>},
                             {registered_name,[]},
                             {initial_call,{erlang,apply,2}},
                             {current_function,{proc_lib,sync_wait,2}},
                             {ancestors,[]},
                             {messages,
                              [{ack,<0.26398.73>,
                                {error,
                                 {{badmatch,{error,eacces}},
                                  [{couch_file,init,1,
                                    [{file,"couch_file.erl"},{line,314}]},
                                   {gen_server,init_it,6,
                                    [{file,"gen_server.erl"},{line,328}]},
                                   {proc_lib,init_p_do_apply,3,
                                    [{file,"proc_lib.erl"},{line,239}]}]}}}]},
                             {links,[<0.85.0>,<0.26398.73>]},
                             {dictionary,[]},
                             {trap_exit,false},
                             {status,runnable},
                             {heap_size,233},
                             {stack_size,20},
                             {reductions,28}]}]]}}
[Thu, 20 Aug 2015 13:59:47 GMT] [error] [<0.85.0>] ** Generic server couch_server terminating 
** Last message in was {'EXIT',<0.25603.73>,
                           {{badmatch,{error,eacces}},
                            [{couch_file,init,1,
                                 [{file,"couch_file.erl"},{line,314}]},
                             {gen_server,init_it,6,
                                 [{file,"gen_server.erl"},{line,328}]},
                             {proc_lib,init_p_do_apply,3,
                                 [{file,"proc_lib.erl"},{line,239}]}]}}
** When Server state == {server,"/var/db/couchdb",
                            {re_pattern,0,0,0,
                                <<69,82,67,80,140,0,0,0,16,0,0,0,1,0,0,0,255,
                                  255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
                                  0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                                  0,0,0,0,0,0,0,0,0,0,0,125,0,72,25,106,0,0,0,
                                  0,0,0,0,0,0,0,0,0,254,255,255,7,0,0,0,0,0,0,
                                  0,0,0,0,0,0,0,0,0,0,106,0,0,0,0,16,171,255,
                                  3,0,0,0,128,254,255,255,7,0,0,0,0,0,0,0,0,0,
                                  0,0,0,0,0,0,0,98,27,114,0,72,0>>},
                            100,99,"Wed, 19 Aug 2015 12:57:47 GMT"}
** Reason for termination == 
** {{case_clause,[]},
    [{couch_server,handle_info,2,[{file,"couch_server.erl"},{line,435}]},
     {gen_server,try_dispatch,4,[{file,"gen_server.erl"},{line,615}]},
     {gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,681}]},
     {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}

由于我对 erlang 一无所知,所以我一个字也听不懂 - 这些错误意味着什么以及可能产生这些错误的原因是什么?

非常感谢, 塞巴斯蒂安

最佳答案

唯一相关的错误是{badmatch,{error,eacces},它表明发生了 POSIX EACCES 错误。输出的其余部分是显示崩溃“状态”的 erlang 方式,这是并行运行时所需的东西。

根据 erlang 文档 ( http://www.erlang.org/doc/man/file.html ),错误 eacces 也可能意味着:“缺少读取文件或搜索父目录之一的权限。”

您是否还检查了正确的父目录权限? 是否有什么东西改变了文件系统? /var/db 是 NFS 挂载还是其他什么?

关于CouchDB 突然崩溃并出现 "Could not open file"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32122176/

相关文章:

couchdb - 'continuous'对于PouchDB的replicate()意味着什么?

javascript - Couchdb 使用用户名和密码同步访问

couchdb - 无法使用用户将文档添加到数据库 - "You are not a server admin"

mysql - 用于 CRM、CMS 和其他金融系统的 RDBMS 与 NoSQL

timestamp - 如何使用couchdb对日期范围内的 View 值求和?

http - CouchDB/MochiWeb : negative effect of persistent connections

database - 什么是 couchdb,我应该使用它做什么以及如何使用它?

mongodb - MongoDB 和 CouchDB 是完美的替代品吗?

html - 如何将 TouchDB 嵌入到 phonegap html5 应用程序中?

javascript - jQuery PUT ajax 请求不工作