Discourse-docker executando com problema de memória no Unicorn

Execute o Docker com a versão mais recente discourse-docker, Mem: 2GB, 3 threads do unicorn.
Há muitos erros de log como abaixo.

I, [2019-12-17T22:44:47.722151 #19487]  INFO -- : listening on addr=0.0.0.0:3000 fd=13
I, [2019-12-17T22:44:53.036892 #19487]  INFO -- : master process ready
I, [2019-12-17T22:44:55.704154 #19587]  INFO -- : worker=0 ready
I, [2019-12-17T22:44:56.644984 #19594]  INFO -- : worker=1 ready
I, [2019-12-17T22:44:57.595814 #19601]  INFO -- : worker=2 ready
I, [2019-12-18T05:12:51.517167 #19487]  INFO -- : reaped #<Process::Status: pid 19587 exit 0> worker=0
I, [2019-12-18T05:12:52.533342 #19487]  INFO -- : reaped #<Process::Status: pid 19594 exit 0> worker=1
Detected dead worker 19563, restarting...
I, [2019-12-18T05:12:53.551518 #19487]  INFO -- : reaped #<Process::Status: pid 19601 exit 0> worker=2
I, [2019-12-18T05:12:59.062671 #11689]  INFO -- : worker=1 ready
I, [2019-12-18T05:12:59.063307 #11680]  INFO -- : worker=0 ready
I, [2019-12-18T05:12:59.360555 #11706]  INFO -- : worker=2 ready
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
D, [2019-12-18T05:13:23.583306 #19487] DEBUG -- : waiting 16.0s after suspend/hibernation
I, [2019-12-18T05:13:44.194692 #19487]  INFO -- : reaped #<Process::Status: pid 11680 exit 0> worker=0
I, [2019-12-18T05:13:44.194960 #19487]  INFO -- : reaped #<Process::Status: pid 11689 exit 0> worker=1
I, [2019-12-18T05:13:44.195054 #19487]  INFO -- : reaped #<Process::Status: pid 11706 exit 0> worker=2
I, [2019-12-18T05:13:44.195120 #19487]  INFO -- : master complete
I, [2019-12-18T05:13:45.760881 #11795]  INFO -- : Refreshing Gem list

Alguém tem o mesmo problema?

Você está executando algum plugin não oficial? Ou está rodando algo mais no servidor? 2GB deveriam ser mais do que suficientes…

Obrigado pela resposta. O servidor executa apenas o Sidekiq e o Discourse.

Por favor, execute:

cd /var/discourse
./discourse-doctor

E compartilhe o link conosco?

@Falco
Muito obrigado. Aqui estão os resultados do diagnóstico:

DISCOURSE DOCTOR Sex Dez 20 03:42:31 UTC 2019
SO: Linux int-communityweb-01w.our-internal-domain 3.10.0-1062.7.1.el7.x86_64 #1 SMP Seg Dez 2 17:33:29 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux


YML=web_only.yml
Containers encontrados/web_only.yml

==================== CONFIGURAÇÕES DO YML ====================
DISCOURSE_HOSTNAME=int-communityweb-vip.our-internal-domain
SMTP_ADDRESS=our_smtp_server # (obrigatório)
DEVELOPER_EMAILS=REDACTED 
SMTP_PASSWORD=REDACTED  (opcional)
SMTP_PORT=25 # (opcional)
SMTP_USER_NAME=# (opcional)
LETSENCRYPT_ACCOUNT_EMAIL=REDACTED 

==================== INFORMAÇÕES DO DOCKER ====================
VERSAO DO DOCKER: Docker version 17.05.0-ce, build 89658be

PROCESSOS DO DOCKER (docker ps -a)

CONTAINER ID        IMAGE                                                                                                             COMMAND             CREATED             STATUS                    PORTS                NAMES
e6c7024d0d4b        artifacts.our-internal-domain:8080/image/community:99-2.0.20191013-2320-tests-passed-b6b05d3b48-2019-12-16_09-28   "/sbin/boot"        43 horas atrás        Up 43 horas               0.0.0.0:80->80/tcp   web_only
703de08548b0        artifacts.our-internal-domain:8080/image/community:90-2.0.20190625-0946-tests-passed-ac7d68a-2019-08-30_09-36      "/sbin/boot"        4 semanas atrás         Exited (5) 46 horas atrás                        web_only_bak


O container Discourse web_only está em execução


==================== PLUGINS ====================
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://gitlab.our-internal-domain/community/community-sso-plugin.git
          - git clone https://gitlab.our-internal-domain/community/community-ads-plugin.git
          - git clone  --branch upgarde-newrelic-gem https://gitlab.our-internal-domain/community/community-newrelic-plugin.git

AVISO:
Parece que você possui plugins não oficiais.
Se estiver tendo problemas, desative-os e tente reconstruir novamente.

Veja https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb para a lista oficial.

========================================
Versão do Discourse em int-communityweb-vip.our-internal-domain: Discourse 2.4.0.beta8 
Versão do Discourse em localhost: Discourse 2.4.0.beta8 


==================== INFORMAÇÕES DE MEMÓRIA ====================
SO: Linux
RAM (MB): 1882

              total        used        free      shared  buff/cache   available
Mem:           1838        1340          66           7         430         306
Swap:          3071         388        2683

==================== VERIFICAÇÃO DE ESPAÇO EM DISCO ====================
---------- Espaço em Disco do SO ----------
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/vg00-root   19G   15G  3.3G  82% /
/dev/mapper/vg00-root   19G   15G  3.3G  82% /var/lib/docker/overlay
/dev/mapper/vg00-root   19G   15G  3.3G  82% /

---------- Espaço em Disco do Container ----------


==================== INFORMAÇÕES DO DISCO ====================

Disco /dev/sda: 21,5 GB, 21474836480 bytes, 41943040 setores
Unidades = setores de 1 * 512 = 512 bytes
Tamanho do setor (lógico/físico): 512 bytes / 512 bytes
Tamanho de E/S (mínimo/ótimo): 512 bytes / 512 bytes
Tipo de rótulo do disco: dos
Identificador do disco: 0x0005c8ec

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1050623      524288   83  Linux
/dev/sda2         1050624    16777215     7863296   8e  Linux LVM
/dev/sdimage        16777216    41943039    12582912   8e  Linux LVM

Disco /dev/mapper/vg00-root: 19,9 GB, 19851640832 bytes, 38772736 setores
Unidades = setores de 1 * 512 = 512 bytes
Tamanho do setor (lógico/físico): 512 bytes / 512 bytes
Tamanho de E/S (mínimo/ótimo): 512 bytes / 512 bytes


Disco /dev/mapper/vg00-swap: 1073 MB, 1073741824 bytes, 2097152 setores
Unidades = setores de 1 * 512 = 512 bytes
Tamanho do setor (lógico/físico): 512 bytes / 512 bytes
Tamanho de E/S (mínimo/ótimo): 512 bytes / 512 bytes

==================== FIM DAS INFORMAÇÕES DO DISCO ====================

==================== TESTE DE EMAIL ====================
Para um teste robusto, obtenha um endereço em http://www.mail-tester.com/
Teste de email pulado.

==================== CONCLUÍDO! ====================
  1. O kernel aí é bastante antigo. Você pode rodar em algo um pouco mais moderno?

  2. A versão do Docker aí também é bastante antiga. Você pode atualizar para uma versão suportada?

  3. Você está executando um contêiner web_only, que usará ainda menos memória do que um contêiner autônomo. Dito isso, você está rodando vários plugins personalizados, que podem ou não estar alocando muita memória.

  4. Verifique a swapiness do seu sistema operacional; ela pode estar muito baixa.

  5. Seu Unicorn foi encerrado. É difícil saber o motivo sem mais logs… Seus plugins personalizados fazem solicitações a sistemas externos de forma síncrona? Talvez esteja apenas dando timeout?

Há muitas variáveis envolvidas aqui, afastando isso de uma instalação simples, então eu tentaria reduzir essas variáveis primeiro.

@Falco Obrigado, vou adicionar mais memória para isso. Em relação à atualização do kernel e do Docker, vou conversar com a equipe de SE para tomar a decisão.
Feliz Natal. :dizzy: