2015-07-21 10 views
5

RabbitMQ rozbił. RabbitMQ działał poprawnie przez wiele dni (10-15 dni). Nie rozumiem, dlaczego się rozbił.RabbitMQ Generic rabbit_disk_monitor serwer kończący/eheap_alloc: Nie można przydzielać 229520 bajtów pamięci (typu "old_heap")


Używam RabbitMQ 3.4.0 na Erlang 17,0


Erlang stworzył plik zrzutu za katastrofę. Który pokazuje

eheap_alloc: Cannot allocate 229520 bytes of memory (of type "old_heap"). 

Należy również pamiętać, że RabbitMQ publikować subskrybowania obciążenie wiadomość jest bardzo niska. (max: 1-2 wiadomości/sekundę). Wiadomości RabbitMQ są przetwarzane tak, jak to jest, więc RabbitMQ jest prawie cały czas pusty. Przestrzeń dyskowa & jest również wystarczająca.

More system info: 
Limiting to approx 8092 file handles (7280 sockets) 
Memory limit set to 6553MB of 16383MB total. 
Disk free limit set to 50MB. 

Logi RabbitMQ wyglądają jak poniżej.

=ERROR REPORT==== 18-Jul-2015::04:29:31 === 
** Generic server rabbit_disk_monitor terminating 
** Last message in was update 
** When Server state == {state,"c:/Users/jasmin.joshi/AppData/Roaming/RabbitMQ/db/[email protected]", 
           50000000,28358258688,100,10000, 
           #Ref<0.0.106.70488>,false} 
** Reason for termination == 
** {eacces,[{erlang,open_port, 
        [{spawn,"C:\\Windows\\system32\\cmd.exe /c dir /-C /W \"c:/Users/jasmin.joshi/AppData/Roaming/RabbitMQ/db/[email protected]\""}, 
        [stream,in,eof,hide]], 
        []}, 
      {os,cmd,1,[{file,"os.erl"},{line,204}]}, 
      {rabbit_disk_monitor,get_disk_free,2,[]}, 
      {rabbit_disk_monitor,internal_update,1,[]}, 
      {rabbit_disk_monitor,handle_info,2,[]}, 
      {gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,599}]}, 
      {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]} 

=INFO REPORT==== 18-Jul-2015::04:29:31 === 
Disabling disk free space monitoring on unsupported platform: 
{{'EXIT',{eacces,[{erlang,open_port, 
          [{spawn,"C:\\Windows\\system32\\cmd.exe /c dir /-C /W \"c:/Users/jasmin.joshi/AppData/Roaming/RabbitMQ/db/[email protected]\""}, 
          [stream,in,eof,hide]], 
          []}, 
        {os,cmd,1,[{file,"os.erl"},{line,204}]}, 
        {rabbit_disk_monitor,get_disk_free,2,[]}, 
        {rabbit_disk_monitor,init,1,[]}, 
        {gen_server,init_it,6,[{file,"gen_server.erl"},{line,306}]}, 
        {proc_lib,init_p_do_apply,3, 
          [{file,"proc_lib.erl"},{line,239}]}]}}, 
17179336704} 

=INFO REPORT==== 18-Jul-2015::04:29:31 === 
Disabling disk free space monitoring on unsupported platform: 
{{'EXIT',{eacces,[{erlang,open_port, 
          [{spawn,"C:\\Windows\\system32\\cmd.exe /c dir /-C /W \"c:/Users/jasmin.joshi/AppData/Roaming/RabbitMQ/db/[email protected]\""}, 
          [stream,in,eof,hide]], 
          []}, 
        {os,cmd,1,[{file,"os.erl"},{line,204}]}, 
        {rabbit_disk_monitor,get_disk_free,2,[]}, 
        {rabbit_disk_monitor,init,1,[]}, 
        {gen_server,init_it,6,[{file,"gen_server.erl"},{line,306}]}, 
        {proc_lib,init_p_do_apply,3, 
          [{file,"proc_lib.erl"},{line,239}]}]}}, 
17179336704} 

=CRASH REPORT==== 18-Jul-2015::04:29:31 === 
    crasher: 
    initial call: rabbit_disk_monitor:init/1 
    pid: <0.167.0> 
    registered_name: rabbit_disk_monitor 
    exception exit: {eacces, 
         [{erlang,open_port, 
          [{spawn, 
            "C:\\Windows\\system32\\cmd.exe /c dir /-C /W \"c:/Users/jasmin.joshi/AppData/Roaming/RabbitMQ/db/[email protected]\""}, 
           [stream,in,eof,hide]], 
          []}, 
         {os,cmd,1,[{file,"os.erl"},{line,204}]}, 
         {rabbit_disk_monitor,get_disk_free,2,[]}, 
         {rabbit_disk_monitor,internal_update,1,[]}, 
         {rabbit_disk_monitor,handle_info,2,[]}, 
         {gen_server,handle_msg,5, 
          [{file,"gen_server.erl"},{line,599}]}, 
         {proc_lib,init_p_do_apply,3, 
          [{file,"proc_lib.erl"},{line,239}]}]} 
     in function gen_server:terminate/6 (gen_server.erl, line 746) 
    ancestors: [rabbit_disk_monitor_sup,rabbit_sup,<0.140.0>] 
    messages: [] 
    links: [<0.166.0>] 
    dictionary: [] 
    trap_exit: false 
    status: running 
    heap_size: 4185 
    stack_size: 27 
    reductions: 481081978 
    neighbours: 

=SUPERVISOR REPORT==== 18-Jul-2015::04:29:31 === 
    Supervisor: {local,rabbit_disk_monitor_sup} 
    Context: child_terminated 
    Reason:  {eacces, 
        [{erlang,open_port, 
          [{spawn, 
           "C:\\Windows\\system32\\cmd.exe /c dir /-C /W \"c:/Users/jasmin.joshi/AppData/Roaming/RabbitMQ/db/[email protected]\""}, 
          [stream,in,eof,hide]], 
          []}, 
         {os,cmd,1,[{file,"os.erl"},{line,204}]}, 
         {rabbit_disk_monitor,get_disk_free,2,[]}, 
         {rabbit_disk_monitor,internal_update,1,[]}, 
         {rabbit_disk_monitor,handle_info,2,[]}, 
         {gen_server,handle_msg,5, 
          [{file,"gen_server.erl"},{line,599}]}, 
         {proc_lib,init_p_do_apply,3, 
          [{file,"proc_lib.erl"},{line,239}]}]} 
    Offender: [{pid,<0.167.0>}, 
        {name,rabbit_disk_monitor}, 
        {mfargs,{rabbit_disk_monitor,start_link,[50000000]}}, 
        {restart_type,{transient,1}}, 
        {shutdown,4294967295}, 
        {child_type,worker}] 


=CRASH REPORT==== 18-Jul-2015::04:29:31 === 
    crasher: 
    initial call: rabbit_disk_monitor:init/1 
    pid: <0.24989.51> 
    registered_name: [] 
    exception exit: unsupported_platform 
     in function gen_server:init_it/6 (gen_server.erl, line 322) 
    ancestors: [rabbit_disk_monitor_sup,rabbit_sup,<0.140.0>] 
    messages: [] 
    links: [<0.166.0>] 
    dictionary: [] 
    trap_exit: false 
    status: running 
    heap_size: 1598 
    stack_size: 27 
    reductions: 650 
    neighbours: 

=SUPERVISOR REPORT==== 18-Jul-2015::04:29:31 === 
    Supervisor: {local,rabbit_disk_monitor_sup} 
    Context: start_error 
    Reason:  unsupported_platform 
    Offender: [{pid,<0.167.0>}, 
        {name,rabbit_disk_monitor}, 
        {mfargs,{rabbit_disk_monitor,start_link,[50000000]}}, 
        {restart_type,{transient,1}}, 
        {shutdown,4294967295}, 
        {child_type,worker}] 


=CRASH REPORT==== 18-Jul-2015::04:29:31 === 
    crasher: 
    initial call: rabbit_disk_monitor:init/1 
    pid: <0.24991.51> 
    registered_name: [] 
    exception exit: unsupported_platform 
     in function gen_server:init_it/6 (gen_server.erl, line 322) 
    ancestors: [rabbit_disk_monitor_sup,rabbit_sup,<0.140.0>] 
    messages: [] 
    links: [<0.166.0>] 
    dictionary: [] 
    trap_exit: false 
    status: running 
    heap_size: 1598 
    stack_size: 27 
    reductions: 650 
    neighbours: 

=SUPERVISOR REPORT==== 18-Jul-2015::04:29:31 === 
    Supervisor: {local,rabbit_disk_monitor_sup} 
    Context: start_error 
    Reason:  unsupported_platform 
    Offender: [{pid,{restarting,<0.167.0>}}, 
        {name,rabbit_disk_monitor}, 
        {mfargs,{rabbit_disk_monitor,start_link,[50000000]}}, 
        {restart_type,{transient,1}}, 
        {shutdown,4294967295}, 
        {child_type,worker}] 
+0

Mam również do czynienia z tym samym problemem. Każda pomoc będzie doceniona –

Odpowiedz

1

Istnieją dwa błędy niepowiązanych tutaj: jeden jest brak VM można przydzielić pamięci. Innym jest kończenie pracy dysku. Monitor miejsca na dysku jest opcjonalny i na niektórych mniej popularnych platformach lub z określonymi ograniczeniami zabezpieczeń wiadomo, że się nie udaje. To nie obniża maszyny wirtualnej i na pewno nie ma nic wspólnego z awariami sterty.

Niepowodzenie alokacji sterty zazwyczaj sprowadza się do dwóch najczęstszych przypadkach:

  • Znany bug ustalone w Erlang 17.x (nie pamiętam który specyficzne uwolnienie łata, więc korzystają z 17,5)
  • You uruchom 32-bitowy Erlang/OTP w 64-bitowym systemie operacyjnym.

Komentarz Chen Yu na temat błędu wywołania systemowego EACCESS jest poprawny.

Powiązane problemy