30秒后开始Riak崩溃

时间:2016-06-30 21:57:30

标签: solr crash erlang riak leveldb

$ riak start在启动30秒后崩溃。我在riak.conf中有以下(更改)设置:

search = on
storage_backend = leveldb
riak_control = on

crash.log包含以下内容:

2016-06-30 14:49:38 =ERROR REPORT====
** Generic server yz_solr_proc terminating 
** Last message in was {check_solr,0}
** When Server state == {state,"./data/yz",#Port<0.9441>,8093,8985}
** Reason for termination == 
** "solr didn't start in alloted time"
2016-06-30 14:49:38 =CRASH REPORT====
  crasher:
    initial call: yz_solr_proc:init/1
    pid: <0.582.0>
    registered_name: yz_solr_proc
    exception exit: {"solr didn't start in alloted time",[{gen_server,terminate,6,[{file,"gen_server.erl"},{line,744}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}
    ancestors: [yz_solr_sup,yz_sup,<0.578.0>]
    messages: [{'EXIT',#Port<0.9441>,normal}]
    links: [<0.580.0>]
    dictionary: []
    trap_exit: true
    status: running
    heap_size: 376
    stack_size: 27
    reductions: 16170
  neighbours:
2016-06-30 14:49:38 =SUPERVISOR REPORT====
     Supervisor: {local,yz_solr_sup}
     Context:    child_terminated
     Reason:     "solr didn't start in alloted time"
     Offender:   [{pid,<0.582.0>},{name,yz_solr_proc},{mfargs,{yz_solr_proc,start_link,["./data/yz","./data/yz_temp",8093,8985]}},{restart_type,permanent},{shutdown,5000},{child_type,worker}]

2016-06-30 14:49:39 =ERROR REPORT====
** Generic server yz_solr_proc terminating 
** Last message in was {#Port<0.12204>,{exit_status,1}}
** When Server state == {state,"./data/yz",#Port<0.12204>,8093,8985}
** Reason for termination == 
** {"solr OS process exited",1}
2016-06-30 14:49:39 =CRASH REPORT====
  crasher:
    initial call: yz_solr_proc:init/1
    pid: <0.7631.0>
    registered_name: yz_solr_proc
    exception exit: {{"solr OS process exited",1},[{gen_server,terminate,6,[{file,"gen_server.erl"},{line,744}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}
    ancestors: [yz_solr_sup,yz_sup,<0.578.0>]
    messages: [{'EXIT',#Port<0.12204>,normal}]
    links: [<0.580.0>]
    dictionary: []
    trap_exit: true
    status: running
    heap_size: 1598
    stack_size: 27
    reductions: 8968
  neighbours:
2016-06-30 14:49:39 =SUPERVISOR REPORT====
     Supervisor: {local,yz_solr_sup}
     Context:    child_terminated
     Reason:     {"solr OS process exited",1}
     Offender:   [{pid,<0.7631.0>},{name,yz_solr_proc},{mfargs,{yz_solr_proc,start_link,["./data/yz","./data/yz_temp",8093,8985]}},{restart_type,permanent},{shutdown,5000},{child_type,worker}]

2016-06-30 14:49:39 =SUPERVISOR REPORT====
     Supervisor: {local,yz_solr_sup}
     Context:    shutdown
     Reason:     reached_max_restart_intensity
     Offender:   [{pid,<0.7631.0>},{name,yz_solr_proc},{mfargs,{yz_solr_proc,start_link,["./data/yz","./data/yz_temp",8093,8985]}},{restart_type,permanent},{shutdown,5000},{child_type,worker}]

2016-06-30 14:49:39 =SUPERVISOR REPORT====
     Supervisor: {local,yz_sup}
     Context:    child_terminated
     Reason:     shutdown
     Offender:   [{pid,<0.580.0>},{name,yz_solr_sup},{mfargs,{yz_solr_sup,start_link,[]}},{restart_type,permanent},{shutdown,5000},{child_type,supervisor}]

2016-06-30 14:49:39 =SUPERVISOR REPORT====
     Supervisor: {local,yz_sup}
     Context:    shutdown
     Reason:     reached_max_restart_intensity
     Offender:   [{pid,<0.580.0>},{name,yz_solr_sup},{mfargs,{yz_solr_sup,start_link,[]}},{restart_type,permanent},{shutdown,5000},{child_type,supervisor}]

2 个答案:

答案 0 :(得分:2)

  1. 确保Solr使用的端口可用。搜索的默认值为8093,JMX的默认值为8985。
  2. 调整系统以提高性能。关注Improving Performance for Linux
  3. riak.conf中,增加JVM的堆大小,默认值1G通常是不够的。例如,search.solr.jvm_options=-d64 -Xms2g -Xmx4g -XX:+UseStringCache -XX:+UseCompressedOops(请参阅Search Settings)。
  4. 在慢速机器上,Solr可能需要更长时间才能启动。尝试增加search.solr.start_timeout
  5. Solr目录必须是可写的(通常为/var/lib/riak/data/yz*),并且使用兼容的JVM。

答案 1 :(得分:0)

Riak 的内部 solr 使用localhost127.0.0.1作为默认主机。所以它应该在/etc/hosts文件中定义:

127.0.0.1 localhost

仅供参考,如果您使用Windows,您的主机文件位置可能会有所不同。