RabbitMQ (fascio.smp) e alto di CPU/memoria di caricamento problema

Ho una debian box esecuzione di compiti con sedano e rabbitmq per circa un anno. Di recente ho notato che i compiti non sono stati trattati così ho effettuato l’accesso al sistema e ho notato che il sedano non è possibile connettersi a rabbitmq. Ho riavviato rabbitmq-server e anche se il sedano non si lamentano più, non era l’esecuzione di compiti nuovi, ora. La cosa strana era che rabbitmq stava divorando cpu e risorse di memoria come un matto. Il riavvio del server non risolverebbe il problema. Dopo aver trascorso paio di ore alla ricerca di una soluzione in linea senza alcun risultato ho deciso di ricostruire il server.

Ricostruito il nuovo server con Debian 7.5, rabbitmq 2.8.4, sedano 3.1.13 (Cipater). Per circa un’ora o così tutto ha funzionato splendidamente di nuovo fino a quando il sedano ha iniziato a lamentarsi di nuovo che non riesce a collegarsi a rabbitmq!

[2014-08-06 05:17:21,036: ERROR/MainProcess] consumer: Cannot connect to amqp://guest:**@127.0.0.1:5672//: [Errno 111] Connection refused.
Trying again in 6.00 seconds...

Ho riavviato rabbitmq service rabbitmq-server start e stesso problema di guadagno:

rabbitmq iniziato di nuovo di gonfiore costantemente a battere sulla cpu e lentamente prendendo il sopravvento ram e swap:

PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
21823 rabbitmq  20   0  908m 488m 3900 S 731.2 49.4   9:44.74 beam.smp

Ecco il risultato sul rabbitmqctl status:

Status of node '[email protected]' ...
[{pid,21823},
 {running_applications,[{rabbit,"RabbitMQ","2.8.4"},
                        {os_mon,"CPO  CXC 138 46","2.2.9"},
                        {sasl,"SASL  CXC 138 11","2.2.1"},
                        {mnesia,"MNESIA  CXC 138 12","4.7"},
                        {stdlib,"ERTS  CXC 138 10","1.18.1"},
                        {kernel,"ERTS  CXC 138 10","2.15.1"}]},
 {os,{unix,linux}},
 {erlang_version,"Erlang R15B01 (erts-5.9.1) [source] [64-bit] [smp:8:8] [async-threads:30] [kernel-poll:true]\n"},
 {memory,[{total,489341272},
          {processes,462841967},
          {processes_used,462685207},
          {system,26499305},
          {atom,504409},
          {atom_used,473810},
          {binary,98752},
          {code,11874771},
          {ets,6695040}]},
 {vm_memory_high_watermark,0.3999999992280962},
 {vm_memory_limit,414559436},
 {disk_free_limit,1000000000},
 {disk_free,48346546176},
 {file_descriptors,[{total_limit,924},
                    {total_used,924},
                    {sockets_limit,829},
                    {sockets_used,3}]},
 {processes,[{limit,1048576},{used,1354}]},
 {run_queue,0},

Alcune voci da /var/log/rabbitmq:

=WARNING REPORT==== 8-Aug-2014::00:11:35 ===
Mnesia('[email protected]'): ** WARNING ** Mnesia is overloaded: {dump_log,
                                                                write_threshold}

=WARNING REPORT==== 8-Aug-2014::00:11:35 ===
Mnesia('[email protected]'): ** WARNING ** Mnesia is overloaded: {dump_log,
                                                                write_threshold}

=WARNING REPORT==== 8-Aug-2014::00:11:35 ===
Mnesia('[email protected]'): ** WARNING ** Mnesia is overloaded: {dump_log,
                                                                write_threshold}

=WARNING REPORT==== 8-Aug-2014::00:11:35 ===
Mnesia('[email protected]'): ** WARNING ** Mnesia is overloaded: {dump_log,
                                                                write_threshold}

=WARNING REPORT==== 8-Aug-2014::00:11:36 ===
Mnesia('[email protected]'): ** WARNING ** Mnesia is overloaded: {dump_log,
                                                                write_threshold}

=INFO REPORT==== 8-Aug-2014::00:11:36 ===
vm_memory_high_watermark set. Memory used:422283840 allowed:414559436

=WARNING REPORT==== 8-Aug-2014::00:11:36 ===
memory resource limit alarm set on node '[email protected]'.

**********************************************************
*** Publishers will be blocked until this alarm clears ***
**********************************************************

=INFO REPORT==== 8-Aug-2014::00:11:43 ===
started TCP Listener on [::]:5672

=INFO REPORT==== 8-Aug-2014::00:11:44 ===
vm_memory_high_watermark clear. Memory used:290424384 allowed:414559436

=WARNING REPORT==== 8-Aug-2014::00:11:44 ===
memory resource limit alarm cleared on node '[email protected]'

=INFO REPORT==== 8-Aug-2014::00:11:59 ===
vm_memory_high_watermark set. Memory used:414584504 allowed:414559436

=WARNING REPORT==== 8-Aug-2014::00:11:59 ===
memory resource limit alarm set on node '[email protected]'.

**********************************************************
*** Publishers will be blocked until this alarm clears ***
**********************************************************

=INFO REPORT==== 8-Aug-2014::00:12:00 ===
vm_memory_high_watermark clear. Memory used:411143496 allowed:414559436

=WARNING REPORT==== 8-Aug-2014::00:12:00 ===
memory resource limit alarm cleared on node '[email protected]'

=INFO REPORT==== 8-Aug-2014::00:12:01 ===
vm_memory_high_watermark set. Memory used:415563120 allowed:414559436

=WARNING REPORT==== 8-Aug-2014::00:12:01 ===
memory resource limit alarm set on node '[email protected]'.

**********************************************************
*** Publishers will be blocked until this alarm clears ***
**********************************************************

=INFO REPORT==== 8-Aug-2014::00:12:07 ===
Server startup complete; 0 plugins started.

=ERROR REPORT==== 8-Aug-2014::00:15:32 ===
** Generic server rabbit_disk_monitor terminating 
** Last message in was update
** When Server state == {state,"/var/lib/rabbitmq/mnesia/[email protected]",
                               50000000,46946492416,100,10000,
                               #Ref<0.0.1.79456>,false}
** Reason for termination == 
** {unparseable,[]}

=INFO REPORT==== 8-Aug-2014::00:15:37 ===
Disk free limit set to 50MB

=ERROR REPORT==== 8-Aug-2014::00:16:03 ===
** Generic server rabbit_disk_monitor terminating 
** Last message in was update
** When Server state == {state,"/var/lib/rabbitmq/mnesia/[email protected]",
                               50000000,46946426880,100,10000,
                               #Ref<0.0.1.80930>,false}
** Reason for termination == 
** {unparseable,[]}

=INFO REPORT==== 8-Aug-2014::00:16:05 ===
Disk free limit set to 50MB

AGGIORNAMENTO:
Sembra che il problema è stato risolto quando è installata la versione più recente di rabbitmq (3.3.4-1) rabbitmq.com repository. Inizialmente avevo installato (2.8.4) dal repository Debian. Finora rabbitmq-server funziona senza intoppi. Voglio aggiornare questo post se il problema ritorna.

AGGIORNAMENTO:
Purtroppo dopo circa 24 ore il problema è ricomparso in cui rabbitmq arrestare e riavviare il processo sarebbe consumare le risorse fino a che si spegne di nuovo in pochi minuti.

  • Ho riscontrato questo problema oggi e si è rivelato essere che il nostro (singleton) RabbitMQ istanza aveva esaurito il suo burst indennità di EC2. Ho pensato di parlare di come si può aiutare qualcun altro che atterra su questa pagina.
InformationsquelleAutor marcin_koss | 2014-08-06



4 Replies
  1. 41

    Finalmente ho trovato la soluzione. Questi post hanno aiutato a capire questo fuori.
    RabbitMQ su EC2 Consumando Tonnellate di CPU
    e
    https://serverfault.com/questions/337982/how-do-i-restart-rabbitmq-after-switching-machines

    Quello che è successo è rabbitmq era in possesso di tutti i risultati che non sono mai stati liberati al punto in cui è diventato sovraccarico. Ho cancellato tutti i dati non aggiornati in /var/lib/rabbitmq/mnesia/rabbit/, riavviato il coniglio e funziona bene ora.

    La mia soluzione era quella di disattivare la memorizzazione dei risultati complessivamente con CELERY_IGNORE_RESULT = True il Sedano file di configurazione per assicurare che questo non accada di nuovo.

    • Come faccio a interrompere il carico elevato problema per rabbitmq se non sto usando il sedano. Tutte le idee ?
  2. 7

    È anche possibile reimpostare la coda:

    Avviso: Questo cancella tutti i dati e configurazione! Usare con cautela.

    sudo service rabbitmq-server start
    sudo rabbitmqctl stop_app
    sudo rabbitmqctl reset
    sudo rabbitmqctl start_app

    Potrebbe essere necessario eseguire questi comandi a destra dopo il riavvio se il sistema non risponde.

    • Sì, questo ha lavorato per me!
    • rabbitmqctl reset distrugge configurazione e dati! devo supporre che tu non lo sapete, perché è comunque abbastanza azzardato suggerire che senza questo avviso 🙁
  3. 4

    Si stanno esaurendo le risorse di memoria a causa di sedano, ho avuto un problema simile ed era un problema con le code utilizzato da sedano backend risultato.

    È possibile verificare quante code ci sono risorse rabbitmqctl list_queues comando, attenzione, se il numero cresce di eva. In quel caso il check-out il sedano, la uso.

    Su sedano, se non stanno ottenendo i risultati asycronous eventi non configurare un backend per memorizzare quelli inutilizzati risultati.

    • Grazie, l’ho capito ieri. Ho aggiunto CELERY_IGNORE_RESULT = True per il mio celeryconfig.py e da quello che stai dicendo non specificando backend farà il trucco pure. Buon approccio se sono necessari i risultati sarebbe quella di utilizzare un database (mongo, redis) come backend.
  4. 2

    Ho sperimentato un problema simile e si è rivelato essere dovuta a qualche canaglia RabbitMQ applicazioni client.
    Il problema sembra che a causa di alcune nazioni unite con il manico di errore, l’applicazione canaglia era continuamente cercando di stabilire una connessione al RabbitMQ broker.
    Una volta che il client di applicazioni in cui riavviato, tutto torna alla normalità, dal momento che l’applicazione ha smesso di malfunzionamento, c’smesso di provare a fare una connessione a RabbitMQ in un loop infinito)

    • Hai salvato la mia vita!

Lascia un commento