Upgrade de 3.1.x para 3.2.0 trava/falha em instância de 1GB

Qualquer ajuda será bem-vinda. Estou tentando atualizar da versão 3.1.5 para a 3.2.0 há 8 horas.

Parece que está travando aqui:

Garantindo que o launcher esteja atualizado
Buscando origem
Launcher está atualizado
Parando container antigo
+ /usr/bin/docker stop -t 600 app
app
2.0.20231218-0429: Pulling from discourse/base
Digest: sha256:468f70b9bb4c6d0c6c2bbb3efc1a5e12d145eae57bdb6946b7fe5558beb52dc1
Status: A imagem está atualizada para discourse/base:2.0.20231218-0429
docker.io/discourse/base:2.0.20231218-0429
/usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2024-02-01T05:20:13.663978 #1]  INFO -- : Lendo de stdin
I, [2024-02-01T05:20:13.670645 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2024-02-01T05:20:13.712975 #1]  INFO -- : Gerando locales (isso pode demorar um pouco)...
Geração concluída.

I, [2024-02-01T05:20:13.713587 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2024-02-01T05:20:13.717850 #1]  INFO -- :
I, [2024-02-01T05:20:13.718463 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2024-02-01T05:20:13.722273 #1]  INFO -- :
I, [2024-02-01T05:20:13.722901 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2024-02-01T05:20:13.726117 #1]  INFO -- :
I, [2024-02-01T05:20:13.726724 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2024-02-01T05:20:13.730093 #1]  INFO -- :
I, [2024-02-01T05:20:13.730719 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2024-02-01T05:20:13.734550 #1]  INFO -- :
I, [2024-02-01T05:20:13.735116 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres já está em execução, pare o container ; exit 1
2024/02/01 05:20:13 socat[18] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): Arquivo ou diretório não encontrado
I, [2024-02-01T05:20:13.757786 #1]  INFO -- :
I, [2024-02-01T05:20:13.758259 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2024-02-01T05:20:13.761231 #1]  INFO -- :
I, [2024-02-01T05:20:13.761705 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2024-02-01T05:20:13.764603 #1]  INFO -- :
I, [2024-02-01T05:20:13.765030 #1]  INFO -- : > mkdir -p /shared/postgres_run/13-main.pg_stat_tmp
I, [2024-02-01T05:20:13.767619 #1]  INFO -- :
I, [2024-02-01T05:20:13.768243 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/13-main.pg_stat_tmp
I, [2024-02-01T05:20:13.770687 #1]  INFO -- :
I, [2024-02-01T05:20:13.775750 #1]  INFO -- : Arquivo > /etc/service/postgres/run  chmod: +x  chown:
I, [2024-02-01T05:20:13.780586 #1]  INFO -- : Arquivo > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2024-02-01T05:20:13.785496 #1]  INFO -- : Arquivo > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2024-02-01T05:20:13.790412 #1]  INFO -- : Arquivo > /root/upgrade_postgres  chmod: +x  chown:
I, [2024-02-01T05:20:13.791046 #1]  INFO -- : > chown -R root /var/lib/postgresql/13/main
I, [2024-02-01T05:20:16.705999 #1]  INFO -- :
I, [2024-02-01T05:20:16.706819 #1]  INFO -- : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/13/bin/initdb -D /shared/postgres_data || exit 0
I, [2024-02-01T05:20:16.709471 #1]  INFO -- :
I, [2024-02-01T05:20:16.709873 #1]  INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2024-02-01T05:20:16.748408 #1]  INFO -- :
I, [2024-02-01T05:20:16.749205 #1]  INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2024-02-01T05:20:16.752138 #1]  INFO -- :
I, [2024-02-01T05:20:16.752728 #1]  INFO -- : > /root/upgrade_postgres
I, [2024-02-01T05:20:16.759412 #1]  INFO -- :
I, [2024-02-01T05:20:16.759890 #1]  INFO -- : > rm /root/upgrade_postgres
I, [2024-02-01T05:20:16.762107 #1]  INFO -- :
I, [2024-02-01T05:20:16.764889 #1]  INFO -- : Substituindo data_directory = '/var/lib/postgresql/13/main' por data_directory = '/shared/postgres_data' em /etc/postgresql/13/main/postgresql.conf
I, [2024-02-01T05:20:16.765803 #1]  INFO -- : Substituindo (?-mix:#?listen_addresses *=.*) por listen_addresses = '*' em /etc/postgresql/13/main/postgresql.conf
I, [2024-02-01T05:20:16.766486 #1]  INFO -- : Substituindo (?-mix:#?synchronous_commit *=.*) por synchronous_commit = $db_synchronous_commit em /etc/postgresql/13/main/postgresql.conf
I, [2024-02-01T05:20:16.767571 #1]  INFO -- : Substituindo (?-mix:#?shared_buffers *=.*) por shared_buffers = $db_shared_buffers em /etc/postgresql/13/main/postgresql.conf
I, [2024-02-01T05:20:16.768666 #1]  INFO -- : Substituindo (?-mix:#?work_mem *=.*) por work_mem = $db_work_mem em /etc/postgresql/13/main/postgresql.conf
I, [2024-02-01T05:20:16.769702 #1]  INFO -- : Substituindo (?-mix:#?default_text_search_config *=.*) por default_text_search_config = '$db_default_text_search_config' em /etc/postgresql/13/main/postgresql.conf
I, [2024-02-01T05:20:16.770784 #1]  INFO -- : > install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
I, [2024-02-01T05:20:16.777960 #1]  INFO -- :
I, [2024-02-01T05:20:16.778711 #1]  INFO -- : Substituindo (?-mix:#?checkpoint_segments *=.*) por checkpoint_segments = $db_checkpoint_segments em /etc/postgresql/13/main/postgresql.conf
I, [2024-02-01T05:20:16.779400 #1]  INFO -- : Substituindo (?-mix:#?logging_collector *=.*) por logging_collector = $db_logging_collector em /etc/postgresql/13/main/postgresql.conf
I, [2024-02-01T05:20:16.780719 #1]  INFO -- : Substituindo (?-mix:#?log_min_duration_statement *=.*) por log_min_duration_statement = $db_log_min_duration_statement em /etc/postgresql/13/main/postgresql.conf
I, [2024-02-01T05:20:16.782507 #1]  INFO -- : Substituindo (?-mix:^#local +replication +postgres +peer$) por local replication postgres  peer em /etc/postgresql/13/main/pg_hba.conf
I, [2024-02-01T05:20:16.783245 #1]  INFO -- : Substituindo (?-mix:^host.*all.*all.*127.*$) por host all all 0.0.0.0/0 md5 em /etc/postgresql/13/main/pg_hba.conf
I, [2024-02-01T05:20:16.783845 #1]  INFO -- : Substituindo (?-mix:^host.*all.*all.*::1\/128.*$) por host all all ::/0 md5 em /etc/postgresql/13/main/pg_hba.conf
I, [2024-02-01T05:20:16.784749 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
I, [2024-02-01T05:20:16.786361 #1]  INFO -- : > sleep 5
2024-02-01 05:20:16.885 UTC [41] LOG:  iniciando PostgreSQL 13.13 (Debian 13.13-1.pgdg110+1) em x86_64-pc-linux-gnu, compilado por gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
2024-02-01 05:20:16.887 UTC [41] LOG:  escutando no endereço IPv4 "0.0.0.0", porta 5432
2024-02-01 05:20:16.887 UTC [41] LOG:  escutando no endereço IPv6 "::", porta 5432
2024-02-01 05:20:16.893 UTC [41] LOG:  escutando no soquete Unix "/var/run/postgresql/.s.PGSQL.5432"
2024-02-01 05:20:16.902 UTC [44] LOG:  sistema de banco de dados foi desligado em 2024-02-01 05:20:02 UTC
2024-02-01 05:20:16.911 UTC [41] LOG:  sistema de banco de dados está pronto para aceitar conexões
I, [2024-02-01T05:20:21.790669 #1]  INFO -- :
I, [2024-02-01T05:20:21.790891 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
2024-02-01 05:20:21.897 UTC [54] postgres@postgres ERROR:  banco de dados "discourse" já existe
2024-02-01 05:20:21.897 UTC [54] postgres@postgres STATEMENT:  CREATE DATABASE discourse;
createdb: erro: falha na criação do banco de dados: ERROR:  banco de dados "discourse" já existe
I, [2024-02-01T05:20:21.900341 #1]  INFO -- :
I, [2024-02-01T05:20:21.900879 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
2024-02-01 05:20:21.987 UTC [58] postgres@discourse ERROR:  papel "discourse" já existe
2024-02-01 05:20:21.987 UTC [58] postgres@discourse STATEMENT:  create user discourse;
ERROR:  papel "discourse" já existe
I, [2024-02-01T05:20:21.990907 #1]  INFO -- :
I, [2024-02-01T05:20:21.991456 #1]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
I, [2024-02-01T05:20:22.048297 #1]  INFO -- : GRANT

I, [2024-02-01T05:20:22.048988 #1]  INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
I, [2024-02-01T05:20:22.106460 #1]  INFO -- : ALTER SCHEMA

I, [2024-02-01T05:20:22.107187 #1]  INFO -- : > su postgres -c 'psql template1 -c "create extension if not exists hstore;"'
NOTICE:  extensão "hstore" já existe, ignorando
I, [2024-02-01T05:20:22.183367 #1]  INFO -- : CREATE EXTENSION

I, [2024-02-01T05:20:22.183889 #1]  INFO -- : > su postgres -c 'psql template1 -c "create extension if not exists pg_trgm;"'
NOTICE:  extensão "pg_trgm" já existe, ignorando
I, [2024-02-01T05:20:22.240624 #1]  INFO -- : CREATE EXTENSION

I, [2024-02-01T05:20:22.241181 #1]  INFO -- : > su postgres -c 'psql template1 -c "create extension if not exists vector;"'
NOTICE:  extensão "vector" já existe, ignorando
I, [2024-02-01T05:20:22.297658 #1]  INFO -- : CREATE EXTENSION

I, [2024-02-01T05:20:22.298255 #1]  INFO -- : > su postgres -c 'psql discourse -c "create extension if not exists hstore;"'
NOTICE:  extensão "hstore" já existe, ignorando
I, [2024-02-01T05:20:22.356472 #1]  INFO -- : CREATE EXTENSION

I, [2024-02-01T05:20:22.356991 #1]  INFO -- : > su postgres -c 'psql discourse -c "create extension if not exists pg_trgm;"'
NOTICE:  extensão "pg_trgm" já existe, ignorando
I, [2024-02-01T05:20:22.414056 #1]  INFO -- : CREATE EXTENSION

I, [2024-02-01T05:20:22.414618 #1]  INFO -- : > su postgres -c 'psql discourse -c "create extension if not exists vector;"'
NOTICE:  extensão "vector" já existe, ignorando
I, [2024-02-01T05:20:22.470035 #1]  INFO -- : CREATE EXTENSION

I, [2024-02-01T05:20:22.470658 #1]  INFO -- : > sudo -u postgres psql discourse
I, [2024-02-01T05:20:22.475733 #1]  INFO -- : update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'discourse' AND encoding = pg_char_to_encoding('SQL_ASCII');

I, [2024-02-01T05:20:22.567511 #1]  INFO -- : Arquivo > /var/lib/postgresql/take-database-backup  chmod: +x  chown: postgres:postgres
I, [2024-02-01T05:20:22.572125 #1]  INFO -- : Arquivo > /var/spool/cron/crontabs/postgres  chmod:   chown:
I, [2024-02-01T05:20:22.572526 #1]  INFO -- : > echo postgres instalado!
I, [2024-02-01T05:20:22.575793 #1]  INFO -- : postgres instalado!

I, [2024-02-01T05:20:22.580912 #1]  INFO -- : Arquivo > /etc/service/redis/run  chmod: +x  chown:
I, [2024-02-01T05:20:22.585785 #1]  INFO -- : Arquivo > /etc/service/redis/log/run  chmod: +x  chown:
I, [2024-02-01T05:20:22.590830 #1]  INFO -- : Arquivo > /etc/runit/3.d/10-redis  chmod: +x  chown:
I, [2024-02-01T05:20:22.593112 #1]  INFO -- : Substituindo daemonize yes por  em /etc/redis/redis.conf
I, [2024-02-01T05:20:22.594012 #1]  INFO -- : Substituindo (?-mix:^pidfile.*$) por  em /etc/redis/redis.conf
I, [2024-02-01T05:20:22.594826 #1]  INFO -- : > install -d -m 0755 -o redis -g redis /shared/redis_data
I, [2024-02-01T05:20:22.597926 #1]  INFO -- :
I, [2024-02-01T05:20:22.598727 #1]  INFO -- : Substituindo (?-mix:^logfile.*$) por logfile "" em /etc/redis/redis.conf
I, [2024-02-01T05:20:22.599588 #1]  INFO -- : Substituindo (?-mix:^bind .*$) por  em /etc/redis/redis.conf
I, [2024-02-01T05:20:22.601300 #1]  INFO -- : Substituindo (?-mix:^dir .*$) por dir /shared/redis_data em /etc/redis/redis.conf
I, [2024-02-01T05:20:22.603062 #1]  INFO -- : Substituindo (?-mix:^protected-mode yes) por protected-mode no em /etc/redis/redis.conf
I, [2024-02-01T05:20:22.604759 #1]  INFO -- : Substituindo # io-threads 4 por io-threads $redis_io_threads em /etc/redis/redis.conf
I, [2024-02-01T05:20:22.606503 #1]  INFO -- : > echo redis instalado
I, [2024-02-01T05:20:22.609035 #1]  INFO -- : redis instalado

I, [2024-02-01T05:20:22.609661 #1]  INFO -- : > cat /etc/redis/redis.conf | grep logfile
I, [2024-02-01T05:20:22.614668 #1]  INFO -- : logfile ""

I, [2024-02-01T05:20:22.615160 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2024-02-01T05:20:22.616826 #1]  INFO -- : > sleep 10
110:C 01 Fev 2024 05:20:22.631 # oO0OoO0OoO0Oo Redis está iniciando oO0OoO0OoO0Oo
110:C 01 Fev 2024 05:20:22.631 # Versão do Redis=7.0.7, bits=64, commit=00000000, modificado=0, pid=110, acabou de iniciar
110:C 01 Fev 2024 05:20:22.631 # Configuração carregada
110:M 01 Fev 2024 05:20:22.632 * relógio monótono: POSIX clock_gettime
110:M 01 Fev 2024 05:20:22.633 * Modo de execução=standalone, porta=6379.
110:M 01 Fev 2024 05:20:22.633 # Servidor inicializado
110:M 01 Fev 2024 05:20:22.634 # AVISO: A superalocação de memória deve estar habilitada! Sem ela, um salvamento em segundo plano ou replicação pode falhar em condições de memória baixa. Se estiver desabilitado, também pode causar falhas sem condição de memória baixa, veja https://github.com/jemalloc/jemalloc/issues/1328. Para corrigir esse problema, adicione 'vm.overcommit_memory = 1' ao /etc/sysctl.conf e reinicie ou execute o comando 'sysctl vm.overcommit_memory=1' para que isso tenha efeito.
110:M 01 Fev 2024 05:20:22.634 # AVISO: Seu sistema está configurado para usar a fonte de relógio 'xen', o que pode levar a desempenho degradado. Verifique o resultado da verificação de sistema [slow-clocksource]: execute 'redis-server --check-system' para verificar se a fonte de relógio do sistema não está degradando o desempenho.
110:M 01 Fev 2024 05:20:22.635 * Carregando RDB produzido pela versão 7.0.7
110:M 01 Fev 2024 05:20:22.635 * Idade do RDB 28 segundos
110:M 01 Fev 2024 05:20:22.635 * Uso de memória do RDB quando criado 12.85 Mb
110:M 01 Fev 2024 05:20:22.670 * Concluído carregamento do RDB, chaves carregadas: 11479, chaves expiradas: 6.
110:M 01 Fev 2024 05:20:22.670 * Banco de dados carregado do disco: 0.035 segundos
110:M 01 Fev 2024 05:20:22.670 * Pronto para aceitar conexões
I, [2024-02-01T05:20:32.621081 #1]  INFO -- :
I, [2024-02-01T05:20:32.621808 #1]  INFO -- : > thpoff echo "thpoff está instalado!"
I, [2024-02-01T05:20:32.626389 #1]  INFO -- : thpoff está instalado!

I, [2024-02-01T05:20:32.626901 #1]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_SMTP_ADDRESS"] == "smtp.example.com"; puts "Abortando! E-mail não está configurado!"; exit 1; end'
I, [2024-02-01T05:20:32.707287 #1]  INFO -- :
I, [2024-02-01T05:20:32.707923 #1]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_HOSTNAME"] == "discourse.example.com"; puts "Abortando! Domínio não está configurado!"; exit 1; end'
I, [2024-02-01T05:20:32.788125 #1]  INFO -- :
I, [2024-02-01T05:20:32.788819 #1]  INFO -- : > /usr/local/bin/ruby -e 'if (ENV["DISCOURSE_CDN_URL"] || "")[0..1] == "//"; puts "Abortando! CDN deve ter um protocolo especificado. Uma vez corrigido, você deve rebake seus posts agora para corrigir todos os posts."; exit 1; end'
I, [2024-02-01T05:20:32.868839 #1]  INFO -- :
I, [2024-02-01T05:20:32.869502 #1]  INFO -- : > rm -f /etc/cron.d/anacron
I, [2024-02-01T05:20:32.872477 #1]  INFO -- :
I, [2024-02-01T05:20:32.875792 #1]  INFO -- : Arquivo > /etc/cron.d/anacron  chmod:   chown:
I, [2024-02-01T05:20:32.882091 #1]  INFO -- : Arquivo > /etc/runit/1.d/copy-env  chmod: +x  chown:
I, [2024-02-01T05:20:32.887278 #1]  INFO -- : Arquivo > /etc/service/unicorn/run  chmod: +x  chown:
I, [2024-02-01T05:20:32.892443 #1]  INFO -- : Arquivo > /etc/service/nginx/run  chmod: +x  chown:
I, [2024-02-01T05:20:32.897678 #1]  INFO -- : Arquivo > /etc/runit/3.d/01-nginx  chmod: +x  chown:
I, [2024-02-01T05:20:32.902952 #1]  INFO -- : Arquivo > /etc/runit/3.d/02-unicorn  chmod: +x  chown:
I, [2024-02-01T05:20:32.903394 #1]  INFO -- : Substituindo # postgres por sv start postgres || exit 1 em /etc/service/unicorn/run
I, [2024-02-01T05:20:32.903939 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2024-02-01T05:20:32.906369 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse git reset --hard
137:C 01 Fev 2024 05:20:32.915 # oO0OoO0OoO0Oo Redis está iniciando oO0OoO0OoO0Oo
137:C 01 Fev 2024 05:20:32.918 # Versão do Redis=7.0.7, bits=64, commit=00000000, modificado=0, pid=137, acabou de iniciar
137:C 01 Fev 2024 05:20:32.918 # Configuração carregada
137:M 01 Fev 2024 05:20:32.919 * relógio monótono: POSIX clock_gettime
137:M 01 Fev 2024 05:20:32.920 # Aviso: Não foi possível criar soquete TCP de escuta do servidor *:6379: bind: Endereço já em uso
137:M 01 Fev 2024 05:20:32.920 # Falha ao escutar na porta 6379 (TCP), abortando.
Atualizando arquivos: 100% (33715/33715), concluído.
I, [2024-02-01T05:20:39.803997 #1]  INFO -- : HEAD está agora em 6ab1a19e9 DEV: Converter min_trust_level_to_allow_invite para grupos (#24893)

I, [2024-02-01T05:20:39.804645 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse git clean -f
I, [2024-02-01T05:20:40.031462 #1]  INFO -- :
I, [2024-02-01T05:20:40.032125 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  if [ $(git rev-parse --is-shallow-repository) == "true" ]; then
      git remote set-branches --add origin main
      git remote set-branches origin stable
      git fetch --depth 1 origin stable
  else
      git fetch --tags --prune-tags --prune --force origin
  fi
'
De https://github.com/discourse/discourse
 - [deletado]             (nenhum)     -> origin/0-drop-code
 - [deletado]             (nenhum)     -> origin/bulk-button-class
 - [deletado]             (nenhum)     -> origin/dependabot/bundler/excon-0.108.0
 - [deletado]             (nenhum)     -> origin/dependabot/bundler/hashdiff-1.1.0
 - [deletado]             (nenhum)     -> origin/dependabot/bundler/parallel-1.24.0
 - [deletado]             (nenhum)     -> origin/dependabot/bundler/rubocop-discourse-3.6.0
 - [deletado]             (nenhum)     -> origin/dependabot/npm_and_yarn/app/assets/javascripts/uppy/drop-target-2.0.2
 - [deletado]             (nenhum)     -> origin/dev/add-new-chat-metrics
 - [deletado]             (nenhum)     -> origin/dev/allow-chat-mentions-to-have-several-notifications
 - [deletado]             (nenhum)     -> origin/dev/convert-min-trust-level-to-create-tag-to-group
 - [deletado]             (nenhum)     -> origin/dev/convert-min-trust-level-to-ignore-to-groups
 - [deletado]             (nenhum)     -> origin/dev/rethink-mass-mentions-polymorphic
 - [deletado]             (nenhum)     -> origin/feature/migrations-schema-generator
 - [deletado]             (nenhum)     -> origin/fix-join-filter-upload
 - [deletado]             (nenhum)     -> origin/fix-modal-flash-minor
 - [deletado]             (nenhum)     -> origin/global-notice-reactive
 - [deletado]             (nenhum)     -> origin/labeler
 - [deletado]             (nenhum)     -> origin/low-ram-help
 - [deletado]             (nenhum)     -> origin/multi-invite
 - [deletado]             (nenhum)     -> origin/table-builder-modal-modifier
 - [deletado]             (nenhum)     -> origin/wip_categories
 - [deletado]             (nenhum)     -> origin/wizard-split
   6ab1a19e9..969ab0fd6  main                    -> origin/main
 * [nova branch]          0-category-reorder      -> origin/0-category-reorder
 * [nova branch]          0-ember-bump            -> origin/0-ember-bump
 * [nova branch]          0-event-helper          -> origin/0-event-helper
 * [nova branch]          0-extend-native         -> origin/0-extend-native
 * [nova branch]          0-rev                   -> origin/0-rev
 * [nova branch]          add-api-for-forced-auth -> origin/add-api-for-forced-auth
 * [nova branch]          amend-visit-copy        -> origin/amend-visit-copy
 * [nova branch]          asciinema-iframe        -> origin/asciinema-iframe
 * [nova branch]          chat/original-message-link -> origin/chat/original-message-link
 * [nova branch]          convert-header-to-glimmer -> origin/convert-header-to-glimmer
 * [nova branch]          decorator-transforms    -> origin/decorator-transforms
 * [nova branch]          dependabot/bundler/omniauth-2.0.0 -> origin/dependabot/bundler/omniauth-2.0.0
 * [nova branch]          dependabot/bundler/parallel_tests-4.4.0 -> origin/dependabot/bundler/parallel_tests-4.4.0
 * [nova branch]          dev-convert-topic-map-expanded-widget-to-component -> origin/dev-convert-topic-map-expanded-widget-to-component
 * [nova branch]          dev/check-whether-online-user-ids-may-be-memoized-between-job-runs -> origin/dev/check-whether-online-user-ids-may-be-memoized-between-job-runs
 * [nova branch]          dev/drop-the-user-id-column-from-chat-mentions -> origin/dev/drop-the-user-id-column-from-chat-mentions
 + e0c0191bb...feb00e04c dev/dry-up-user-status-serializers -> origin/dev/dry-up-user-status-serializers  (atualização forçada)
 * [nova branch]          dev/experiment-theme-settings-free-ui -> origin/dev/experiment-theme-settings-free-ui
 * [nova branch]          dev/make-admins-tl4-in-tests -> origin/dev/make-admins-tl4-in-tests
 * [nova branch]          dev/promote-plugin-post-deploy-migrations -> origin/dev/promote-plugin-post-deploy-migrations
 * [nova branch]          dev/proof-of-concept-rewriting-mentions-notification-logic -> origin/dev/proof-of-concept-rewriting-mentions-notification-logic
 * [nova branch]          dev_category_order_database -> origin/dev_category_order_database
 * [nova branch]          dev_update_category_position -> origin/dev_update_category_position
 * [nova branch]          ellaestigoy-patch-2     -> origin/ellaestigoy-patch-2
 * [nova branch]          fast-edit-expand-regex  -> origin/fast-edit-expand-regex
 * [nova branch]          feature/add-new-illegal-flag-reason -> origin/feature/add-new-illegal-flag-reason
 * [nova branch]          feature/custom-date-range -> origin/feature/custom-date-range
 * [nova branch]          feature/paste-upload-on-first-upload-input-templates -> origin/feature/paste-upload-on-first-upload-input-templates
 * [nova branch]          feature_async_load_colors -> origin/feature_async_load_colors
 * [nova branch]          fix-email-category-badge -> origin/fix-email-category-badge
 * [nova branch]          fix_category_chooser    -> origin/fix_category_chooser
 * [nova branch]          fix_in_any_groups       -> origin/fix_in_any_groups
 * [nova branch]          fix_preload_sidebar_categories -> origin/fix_preload_sidebar_categories
 * [nova branch]          fix_reviewable_translation -> origin/fix_reviewable_translation
   7f2bdca65..b851b879c  generic-import-latest   -> origin/generic-import-latest
 * [nova branch]          hijacks                 -> origin/hijacks
 * [nova branch]          issue/avatar-upload-permission-serialize -> origin/issue/avatar-upload-permission-serialize
 * [nova branch]          issue/run-admin-sidebar-init-after-logs-notice -> origin/issue/run-admin-sidebar-init-after-logs-notice
 + 90a3535b7...e6e64cfd5 migrations-convert      -> origin/migrations-convert  (atualização forçada)
 + 0fa691496...b0f74a188 plugin-extra-js         -> origin/plugin-extra-js  (atualização forçada)
 * [nova branch]          promote-migration-tweak -> origin/promote-migration-tweak
 * [nova branch]          revert-25009-dev/convert-min-trust-to-allow-self-wiki-to-groups -> origin/revert-25009-dev/convert-min-trust-to-allow-self-wiki-to-groups
 * [nova branch]          revert-bulk-topic-actions -> origin/revert-bulk-topic-actions
 * [nova branch]          sidebar-above-outlet    -> origin/sidebar-above-outlet
 * [nova branch]          site-logo-height        -> origin/site-logo-height
 * [nova branch]          soft-load-topic-results -> origin/soft-load-topic-results
   d7f7f79b6..968b1a57e  stable                  -> origin/stable
 * [nova branch]          support-reset-bump-date-post-id -> origin/support-reset-bump-date-post-id
   6ab1a19e9..969ab0fd6  tests-passed            -> origin/tests-passed
 * [nova branch]          unhide_lazy_load_categories -> origin/unhide_lazy_load_categories
 * [nova branch]          universal-nonce         -> origin/universal-nonce
 * [nova branch]          unread-mobile-indicator -> origin/unread-mobile-indicator
 * [nova branch]          virtual-scroll-list     -> origin/virtual-scroll-list
 t [tag update]          beta                    -> beta
 t [tag update]          latest-release          -> latest-release
 * [nova tag]             v3.1.4                  -> v3.1.4
 * [nova tag]             v3.1.5                  -> v3.1.5
 * [nova tag]             v3.2.0                  -> v3.2.0
 * [nova tag]             v3.2.0.beta4            -> v3.2.0.beta4
 * [nova tag]             v3.2.0.beta5            -> v3.2.0.beta5
I, [2024-02-01T05:20:40.935200 #1]  INFO -- :
I, [2024-02-01T05:20:40.935686 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  if [[ $(git symbolic-ref --short HEAD) == stable ]] ; then
      git pull
  else
      git -c advice.detachedHead=false checkout stable
  fi
'
Alternado para uma nova branch 'stable'
I, [2024-02-01T05:20:44.064865 #1]  INFO -- : Branch 'stable' configurado para rastrear branch remota 'stable' de 'origin'.

I, [2024-02-01T05:20:44.065354 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse git config user.discourse-version stable
I, [2024-02-01T05:20:44.077044 #1]  INFO -- :
I, [2024-02-01T05:20:44.077436 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp
I, [2024-02-01T05:20:44.085161 #1]  INFO -- :
I, [2024-02-01T05:20:44.085555 #1]  INFO -- : > cd /var/www/discourse && chown discourse:www-data tmp
I, [2024-02-01T05:20:44.090473 #1]  INFO -- :
I, [2024-02-01T05:20:44.090945 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp/pids
I, [2024-02-01T05:20:44.094272 #1]  INFO -- :
I, [2024-02-01T05:20:44.094646 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp/sockets
I, [2024-02-01T05:20:44.097962 #1]  INFO -- :
I, [2024-02-01T05:20:44.098333 #1]  INFO -- : > cd /var/www/discourse && touch tmp/.gitkeep
I, [2024-02-01T05:20:44.102920 #1]  INFO -- :
I, [2024-02-01T05:20:44.103294 #1]  INFO -- : > cd /var/www/discourse && mkdir -p                    /shared/log/rails
I, [2024-02-01T05:20:44.106489 #1]  INFO -- :
I, [2024-02-01T05:20:44.106964 #1]  INFO -- : > cd /var/www/discourse && bash -c "touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log"
I, [2024-02-01T05:20:44.112554 #1]  INFO -- :
I, [2024-02-01T05:20:44.112953 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log /var/www/discourse/log"
I, [2024-02-01T05:20:44.119868 #1]  INFO -- :
I, [2024-02-01T05:20:44.120247 #1]  INFO -- : > cd /var/www/discourse && bash -c "mkdir -p           /shared/{uploads,backups}"
I, [2024-02-01T05:20:44.125723 #1]  INFO -- :
I, [2024-02-01T05:20:44.126103 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/{uploads,backups} /var/www/discourse/public"
I, [2024-02-01T05:20:44.130710 #1]  INFO -- :
I, [2024-02-01T05:20:44.131085 #1]  INFO -- : > cd /var/www/discourse && bash -c "mkdir -p           /shared/tmp/{backups,restores}"
I, [2024-02-01T05:20:44.136397 #1]  INFO -- :
I, [2024-02-01T05:20:44.136900 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/tmp/{backups,restores} /var/www/discourse/tmp"
I, [2024-02-01T05:20:44.141456 #1]  INFO -- :
I, [2024-02-01T05:20:44.141832 #1]  INFO -- : > cd /var/www/discourse && chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp
I, [2024-02-01T05:20:44.267143 #1]  INFO -- :
I, [2024-02-01T05:20:44.267732 #1]  INFO -- : > cd /var/www/discourse && [ ! -d public/plugins ] || find public/plugins/ -maxdepth 1 -xtype l -delete
I, [2024-02-01T05:20:44.270260 #1]  INFO -- :
I, [2024-02-01T05:20:44.271569 #1]  INFO -- : Substituindo # redis por sv start redis || exit 1 em /etc/service/unicorn/run
I, [2024-02-01T05:20:44.273289 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/docker_manager.git
Clonando em 'docker_manager'...
I, [2024-02-01T05:20:45.047892 #1]  INFO -- :
I, [2024-02-01T05:20:45.048485 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-voting.git
Clonando em 'discourse-voting'...
I, [2024-02-01T05:20:45.349517 #1]  INFO -- :
I, [2024-02-01T05:20:45.350128 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-solved.git
Clonando em 'discourse-solved'...
I, [2024-02-01T05:20:45.696361 #1]  INFO -- :
I, [2024-02-01T05:20:45.696958 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-policy.git
Clonando em 'discourse-policy'...
I, [2024-02-01T05:20:45.985549 #1]  INFO -- :
I, [2024-02-01T05:20:45.986116 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-adplugin.git
Clonando em 'discourse-adplugin'...
I, [2024-02-01T05:20:46.333531 #1]  INFO -- :
I, [2024-02-01T05:20:46.334121 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-data-explorer.git
Clonando em 'discourse-data-explorer'...
I, [2024-02-01T05:20:46.684891 #1]  INFO -- :
I, [2024-02-01T05:20:46.685512 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/communiteq/discourse-suppress-category-from-latest.git
Clonando em 'discourse-suppress-category-from-latest'...
I, [2024-02-01T05:20:46.860067 #1]  INFO -- :
I, [2024-02-01T05:20:46.860646 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-bbcode-color
Clonando em 'discourse-bbcode-color'...
I, [2024-02-01T05:20:47.089640 #1]  INFO -- :
I, [2024-02-01T05:20:47.090378 #1]  INFO -- : > cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
I, [2024-02-01T05:20:47.099746 #1]  INFO -- :
I, [2024-02-01T05:20:47.100326 #1]  INFO -- : > rm /etc/nginx/sites-enabled/default
I, [2024-02-01T05:20:47.103575 #1]  INFO -- :
I, [2024-02-01T05:20:47.104073 #1]  INFO -- : > mkdir -p /var/nginx/cache
I, [2024-02-01T05:20:47.107202 #1]  INFO -- :
I, [2024-02-01T05:20:47.108186 #1]  INFO -- : Substituindo pid /run/nginx.pid; por daemon off; em /etc/nginx/nginx.conf
I, [2024-02-01T05:20:47.109528 #1]  INFO -- : Substituindo (?m-ix:upstream[^\}]+\}) por upstream discourse { server 127.0.0.1:3000; } em /etc/nginx/conf.d/discourse.conf
I, [2024-02-01T05:20:47.110130 #1]  INFO -- : Substituindo (?-mix:server_name.+$) por server_name _ ; em /etc/nginx/conf.d/discourse.conf
I, [2024-02-01T05:20:47.110992 #1]  INFO -- : Substituindo (?-mix:client_max_body_size.+$) por client_max_body_size $upload_size ; em /etc/nginx/conf.d/discourse.conf
I, [2024-02-01T05:20:47.111810 #1]  INFO -- : Substituindo (?-mix:worker_connections.+$) por worker_connections $nginx_worker_connections ; em /etc/nginx/nginx.conf
I, [2024-02-01T05:20:47.112296 #1]  INFO -- : > echo "concluída configuração da web"
I, [2024-02-01T05:20:47.114305 #1]  INFO -- : concluída configuração da web

I, [2024-02-01T05:20:47.114863 #1]  INFO -- : > cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock)
I, [2024-02-01T05:20:48.019548 #1]  INFO -- : bundler-2.5.3 instalado com sucesso
1 gem instalado

Ocorreu um erro na minha atualização

```ruby
api_key = "a quick brown fox"
fetch("https://api.example.com/data", headers: { 'Authorization' => api_key })

Por favor, me ajude a corrigi-lo.

Há uma chance de você não ter RAM suficiente, causando muita paginação, o que significa que a CPU não ficará sobrecarregada porque a máquina está sempre paginando coisas para dentro e para fora.

Você pode medir as coisas da linha de comando:

cat /etc/lsb-release
df -h /
free
vmstat 5 5

seja com a máquina em um estado quieto, ou no momento em que ela está travada. (Conecte-se de uma segunda janela para obter uma segunda linha de comando. Ou similar.)

Obrigado, nesta reconstrução, está a andar muito, muito devagar no yarn, a CPU mal está a ser utilizada e não parece haver muita E/S. Estou um pouco perdido sobre o porquê de estar a rastejar.

ubuntu@ip-172-26-6-122:~$ cat /etc/lsb-release
df -h /
free
vmstat 5 5
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.3 LTS"
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        39G   19G   21G  47% /
              total        used        free      shared  buff/cache   available
Mem:          972524      399360       75956       14532      497208      365668
Swap:        2097148       51296     2045852
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----\n r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st\n 0  4  51296  75956  56504 440780  951  936  7442  1197  620 1597  2  4  2 91  0\n 0  5  51296  69668  56632 444976    0    0   418   585  389  893  2  2  0 96  0\n 0  4  51296  65384  57280 448368    0    0   422   599  382  906  1  1  0 97  0\n 0  4  51296  74460  57564 439444    0    0   506   546  399  946  1  3  0 96  0\n 0  4  51296  64588  57828 444900    0    0   545   614  407  983  2  2  0 96  0\n```

![image|690x401](upload://642KzuHZTAZdGgGlyec7wHRZkDV.png)

Antes da versão 3.2.0, as reconstruções geralmente voavam e eram concluídas em cerca de 10 a 20 minutos.

Obrigado. Então, sem troca, não é um problema de RAM. Você tem E/S de bloco constante. Isso pode ser armazenamento remoto?? Tudo é local ou você tem armazenamento em nuvem envolvido?

Notei que tanto o snapd quanto o amazon-ssm-agent acumularam um tempo considerável de CPU, mesmo que sua porcentagem seja zero. Não sei o que está acontecendo lá - eu não tenho nenhum dos dois.

Se a E/S estiver realmente lenta, pode ser que você esteja compartilhando uma máquina (e um disco) com algum vizinho muito “faminto”. Talvez você possa pedir ao seu provedor de hospedagem para movê-lo, ou verificar?

Desculpe, nenhuma boa resposta no momento.

Executando no EC2/Lightsail. Pensei que poderia ser um problema de instância, então tirei um snapshot e iniciei uma nova instância em uma região completamente diferente e ela ainda está travando em

3536:C 01 Feb 2024 18:24:10.670 * DB salvo em disco
3536:C 01 Feb 2024 18:24:10.672 * Fork CoW para RDB: atual 1 MB, pico 1 MB, média 1 MB
110:M 01 Feb 2024 18:24:10.761 * Salvamento em segundo plano encerrado com sucesso
O nome do plugin é 'discourse-topic-voting', mas o diretório do plugin é chamado 'discourse-voting'
O limite heap_size do Node.js (487.0) é menor que 2048MB. Definindo --max-old-space-size=2048.
110:M 01 Feb 2024 18:29:11.092 * 100 alterações em 300 segundos. Salvando...
110:M 01 Feb 2024 18:29:11.509 * Salvamento em segundo plano iniciado pelo pid 3721
3721:C 01 Feb 2024 18:29:59.839 * DB salvo em disco
3721:C 01 Feb 2024 18:29:59.840 * Fork CoW para RDB: atual 1 MB, pico 1 MB, média 1 MB
110:M 01 Feb 2024 18:29:59.876 * Salvamento em segundo plano encerrado com sucesso

Este é o ponto onde ele simplesmente “trava”:

ubuntu@ip-172-26-6-122:~$ cat /etc/lsb-release
df -h /
free
vmstat 5 5
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.3 LTS"
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        39G   19G   21G  47% /
               total        used        free      shared  buff/cache   available
Mem:          972524      674416      155656       15932      142452      143064
Swap:        2097148      201824     1895324
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----\n r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st\n 1  5 201824 155408   3220 140844  870  860  6959  1176  601 1627  3  4  2 91  0\n 1  0 201824 154824   5588 169332    3    0  5503    11  365 1708 39  8  0 53  0\n 3  0 202336  67104   4896 159076   48  150   986   194  321 3046 96  4  0  0  0\n 0  6 209760  74732    296 114488  283 1738  8385  1934  499 2265 46  5  0 49  0\n 0  4 212576  76968    200 115316    0  569  7678   652  387  524  1  1  0 97  0\n

e o htop mostra que está travado consumindo ciclos de CPU em node, ember e snapd, pois de repente ele dispara e consome 100% da CPU e depois fica em torno de <5% por um tempo e depois dispara novamente e assim por diante

Suspeito que seja um problema com a própria atualização do Discourse. Existe alguma maneira de “reiniciar” a atualização do Discourse e fazê-la recomeçar do zero?

Parece que algo na compilação do Discourse está quebrado quando ele está tentando pré-compilar os assets. Ele simplesmente travou aqui sem consumo de I/O ou CPU.

Não consigo encontrar nada na pesquisa do fórum sobre como redefinir uma reconstrução do console e estou sem ideias aqui. @JammyDodger procurando alguma ajuda dos especialistas que possam lançar luz sobre por que a reconstrução travou e como redefini-la.

Eu acho que cada novo ./launcher rebuild app inicia um novo, então se você reiniciou e tentou outra reconstrução, ele deve estar começando do zero a cada vez.

Isso poderia estar conectado às mudanças que você fez no número de unicórnios?

Essa é uma ótima pergunta. Eu não sei e é sobre isso que eu esperava que a equipe de desenvolvimento pudesse comentar. Vou tentar reconstruí-lo novamente usando 2 unicórnios em vez de 1.

Sim, como é o armazenamento padrão nas instâncias mais comuns da AWS.

Acho que ele está trocando pela rede, então é tão rápido quanto vemos aqui.

Embora a etapa de compilação do JS também seja bastante lenta em tipos de instância pequenos da DO, pelo menos é armazenamento local, tanto quanto sei.

Quanto ao que fazer a seguir, parece que a única saída é mudar para um tipo de instância mais caro.

Vou tentar isso em seguida. O surpreendente é que tenho esta instância em execução há muitos anos. Nunca tive problemas para atualizar até a versão 3.1.5. De repente, com a versão 3.2.0, estou tendo problemas. Houve alguma grande mudança nos requisitos do sistema? Tentei várias instâncias a partir de snapshots de 3.1.1 a 3.1.5 e nenhuma delas conclui a atualização para 3.2.0.

É um pouco estranho porque esse servidor consegue rodar o Discourse muito bem, o problema todo é “apenas” construir os arquivos JS. Esse processo ficou muito mais pesado ao longo do último ano, e isso mesmo considerando múltiplos esforços que fizemos para mantê-lo rodando em servidores pequenos.

Ah, OK, então com uma instância de 1G de RAM e swap pela rede, você pode conseguir atender seu fórum no dia a dia, mas a atualização - especialmente recentemente - consome muita RAM. Recomendo que você tire alguns minutos de inatividade e redimensione temporariamente para uma instância de 8G, faça sua atualização e depois redimensione novamente. Eu fiz isso, e custou-me menos de um dólar extra. Também rodou mais rápido e me poupou muito estresse.

O importante é que você não precisa dobrar ou quadruplicar seu gasto mensal - você faz uma mudança temporária.

Sim, já estou com mais de 20 horas de inatividade. Então você tirou um snapshot, redimensionou uma nova instância, fez o upgrade do Discourse, depois tirou outro snapshot e redimensionou para uma nova instância. Entendi corretamente?

Editar: Posso restaurar com segurança um backup 3.1.1 com uma instância 3.2.0? Basicamente, mantenho o último snapshot funcionando para reduzir o tempo de inatividade, depois faço backup do Discourse da instância 3.1.1 e, assim que a nova instância 3.2.0 estiver pronta, restauro esse backup do Discourse 3.1.1?

Quando você diz trocando pela rede, a que você está se referindo? A instância é autônoma, a única coisa no S3 são os backups. Mantive todos os arquivos locais.

Falco achou que era isso que EC2/Lightsail estava fazendo - eu não tenho esse conhecimento.

Acho que sim. Mas peça uma segunda opinião!

Não foi o que eu fiz, mas pode ser equivalente. Com meus provedores de hospedagem (Digital Ocean e Hetzner), sou oferecido uma ação chamada “rescale” ou similar, pela qual minha instância é desligada, alguns minutos se passam e então uma nova instância aparece com o endereço IP correto e todo o conteúdo de disco correto, mas com uma quantidade maior ou menor de RAM e CPUs. Em ambos os casos, a interface faz uma distinção sólida entre redimensionamento reversível e redimensionamento irreversível. Eu nunca tirei um snapshot ou backup no nível do provedor, e nunca usei a Amazon, então pode ser diferente por lá. Desculpe, sem experiência direta!

Editar: pode valer a pena adicionar EC2/Lightsail ao título do tópico??

Eu o defini de volta para 2 de 1, não fez diferença. Ainda travando.

Olhando as estatísticas, não está consumindo CPU, nem usando toda a RAM/Swap disponível. Eu simplesmente não sei por que está tão lento a ponto de levar de 20 minutos para construir 3.1.5 para agora, horas em 3.2.0, está simplesmente travado após o salvamento em segundo plano terminar.

O que estou perdendo aqui, Falco? O que poderia estar acontecendo sem consumir CPU, RAM ou qualquer E/S de disco significativa?

Não percebi que toda vez que configurava uma nova instância a partir de um snapshot, o servidor contactava o letsencrypt para uma nova renovação de certificado e agora excedeu o seu limite para a próxima semana.

Alguma forma de forçar o Discourse a gerar uma nova certificação usando a solução alternativa fornecida aqui: https://letsencrypt.org/docs/duplicate-certificate-limit/

EDIT: Consegui fazer os certificados funcionarem. Copiei todo o diretório letsencrypt de /var/discourse/shared/standalone da instância com certificado válido para a nova instância. Também copiei a pasta ssl além da pasta letsencrypt - mas a questão é - isso é necessário?

Qual é a diferença entre a pasta letsencrypt e a pasta ssl? Pergunto porque notei que os arquivos de certificado nas duas pastas têm tamanhos e timestamps diferentes? @JammyDodger, você saberia por que os arquivos de certificado são armazenados em 2 pastas diferentes?

@JammyDodger @Falco @Ed_S obrigado a todos pela ajuda para resolver isso.

Então, finalmente consegui compilar em uma instância com 2GB de RAM. Parece que ao tentar compilar o discourse 3.2.0, ele estava pedindo 64GB de VM para o ember. Isso parece bem selvagem.

Então, parece que 3.1.5 é a última versão que rodará com 1GB de RAM. A partir da 3.2.0, o mínimo parece ser 2GB. @falco @sam podemos esperar que os requisitos de hardware continuem dobrando para atualizar o discourse? O Discourse pode rodar muito bem com 1GB, são as atualizações que o estão matando. Não há como pré-compilar os assets ou imagens e mantê-los no GitHub e baixá-los durante a atualização para reduzir a carga de memória? A preocupação é que, para sites menores, não precisamos de instâncias de 2GB, 4GB, 8GB, etc.

Ed, só para você saber - minha estratégia não funciona com o Lightsail. Uma vez que você atualiza para uma instância maior, não há como reverter. Então, posso tirar um snapshot do servidor de 1GB, depois iniciar um novo servidor de 2GB (e atualizar o discourse), mas depois, quando eu tirar um snapshot do servidor de 2GB, não há como iniciá-lo de volta em um servidor de 1GB (porque o sistema de arquivos vai de 40GB para 60GB e isso não pode ser revertido). Dito isso, ainda não é uma situação feliz que se precise “aumentar a escala” do servidor apenas para atualizar o software.

Então, basicamente, se você estiver usando o Lightsail, precisará de pelo menos uma instância de 2GB (adeus 1GB) e se a instância de 2GB, por qualquer motivo (como precisar de 64GB de VM para um site pequeno), falhar ao compilar/atualizar o discourse, você está ferrado :frowning:
A única solução seria provavelmente mudar para EC2 ou algo como Digital Ocean, onde você pode aumentar dinamicamente sua RAM/CPU para completar a atualização do discourse e depois diminuí-la após a conclusão da atualização. Ainda tenho dificuldade em entender que precisamos de mais recursos para atualizar o software do que para executar o software.

Finalmente, seria bom se o processo de atualização desse algum tipo de erro se precisasse de mais RAM, mas não conseguisse. Falhar silenciosamente e fazer com que todo o sistema diminua a velocidade não está certo (aliás, para referência, tentei overcommit_memory com 1 e 0 na minha instância de 1GB - mas como eu disse, sem erros, nem mesmo a RAM/swap estava no máximo no momento em que travou nas capturas de tela acima).

Em algum momento, não me importo de enviar uma imagem inicializada: Can Discourse ship frequent Docker images that do not need to be bootstrapped?

Talvez se toda essa série de restrições fosse simplificada:

  • Você executa um contêiner pg
  • Você executa um contêiner redis
  • Você executa um contêiner pré-inicializado, com zero suporte para plugins personalizados, nós apenas empacotaríamos com o oficial

Isso poderia funcionar e ser útil para as pessoas, a desvantagem é que divergiríamos nossa história de instalação, o que efetivamente dobra nosso suporte para instalação gratuita

Executar um cache para ativos compilados, não tenho certeza se podemos conseguir isso, será muito complicado com muitas partes móveis.