2013-09-04 4 views
0

Я не могу понять, почему Erlang вылетает и перезапускается. Я запускаю сервер Ejabberd, и его папка журнала всегда заполнена файлами erl_crash_xxxx.dump. Как я могу отладить эту проблему.Поймите журнал аварий Erlang, созданный Ejabberd

Вот небольшая часть erlang.log файла:

=CRASH REPORT==== 4-Sep-2013::19:44:51 === 
    crasher: 
    initial call: ejabberd_http:init/2 
    pid: <0.15614.15> 
    registered_name: [] 
    exception exit: {normal, 
         {gen_fsm,sync_send_all_state_event, 
          [<0.15454.15>, 
          {http_put,2020093061, 
           [{"xmlns", 
            "http://jabber.org/protocol/httpbind"}, 
            {"rid","2020093061"}, 
            {"sid", 
            "26820e4cd7d331de864b857d1ef3351caf7dbac5"}], 
           [],115,1,[], 
           {{49,205,148,16},56132}}, 
          30000]}} 
     in function gen_fsm:sync_send_all_state_event/3 
     in call from ejabberd_http_bind:http_put/7 
     in call from ejabberd_http_bind:handle_http_put/7 
     in call from ejabberd_http:process/2 
     in call from ejabberd_http:process_request/1 
     in call from ejabberd_http:process_header/2 
     in call from ejabberd_http:receive_headers/1 
    ancestors: [ejabberd_http_sup,ejabberd_sup,<0.37.0>] 
    messages: [] 
    links: [<0.274.0>,#Port<0.1519795>] 
    dictionary: [] 
    trap_exit: false 
    status: running 
    heap_size: 2584 
    stack_size: 24 
    reductions: 1082 
    neighbours: 

Это топ несколько строк типичного файла аварийного дампа:

=erl_crash_dump:0.1 
Tue Sep 3 16:31:47 2013 
Slogan: Kernel pid terminated (application_controller) ({application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}}) 
System version: Erlang R14B04 (erts-5.8.5) [source] [64-bit] [rq:1] [async-threads:0] [hipe] [kernel-poll:false] 
Compiled: Wed Oct 5 17:25:18 2011 
Taints: 
Atoms: 4699 
=memory 
total: 21498768 
processes: 556368 
processes_used: 541208 
system: 20942400 
atom: 322177 
atom_used: 302233 
binary: 18216 
code: 2165726 
ets: 53736 
=hash_table:atom_tab 
size: 3203 
used: 2471 
+0

[Здесь] (http://stackoverflow.com/a/18641265/720999) Я попытался объяснить кому-то еще, как интерпретировать дамп сбоя - рассмотрите руководство и уточните свой вопрос с помощью полезной трассировки стека. – kostix

ответ

0

Эта «авария», вероятно, никак не связаны , То, что вы видите как «= CRASH REPORT =» в ваших файлах журналов, является своего рода «нормальным» или ожидаемым сбоем и как таковое обрабатывается супервизором. Тот, который вы опубликовали, является сбоем внутри обработчика HTTP-вызова при создании или отправке ответа, который может оказаться в каком-то непредвиденном состоянии (например, когда процесс отправки больше не существует), но не уверен в этом. Erlang построен и спроектирован таким образом, чтобы обрабатывать такие сбои изящно. Другими словами, ваш ejabberd все еще работает и удовлетворяет запросы.

Другой - аварийный свалка, которая является результатом реального сбоя времени выполнения Erlang. Это может произойти, если, например, на машине, на которой запущена среда выполнения, заканчивается память. В вашем случае это похоже на ошибку конфигурации, узел не может нормально загрузиться. См. http://www.ejabberd.im/node/872.

+0

Но даже крах секунды держит узел ejabberd все время. Он продолжает работать только в том, что в каталоге журналов есть много файлов дампа аварий. –

+0

Также я вижу очень высокое потребление CU пучком ejabberd. –

+0

Эти файлы сбоев, скорее всего, будут созданы некоторыми другими экземплярами ejabberd, которые будут запущены. –

Смежные вопросы