Не удалось выполнить загрузку

Это на тестовой машине. Ранее я запускал там Discourse — я ошибся при установке и не смог обновиться до последней версии, что я сначала посчитал своей ошибкой. После удаления всей директории Discourse и очистки Docker я попытался выполнить полную чистую установку перед импортом резервной копии из рабочей базы данных.

Странно, но я всё ещё наблюдаю те же проблемы, которые не могу решить.

Вот вывод об ошибке. Я уже пробовал запускать discourse-doctor, но это не дало никакой полезной информации.

...
I, [2022-06-04T18:42:29.087446 #1]  INFO -- : Terminating async processes
I, [2022-06-04T18:42:29.087672 #1]  INFO -- : Sending INT to 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 pid: 42
I, [2022-06-04T18:42:29.087881 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 103
2022-06-04 18:42:29.088 UTC [42] LOG:  received fast shutdown request
103:signal-handler (1654368149) Received SIGTERM scheduling shutdown...
2022-06-04 18:42:29.118 UTC [42] LOG:  aborting any active transactions
2022-06-04 18:42:29.123 UTC [42] LOG:  background worker "logical replication launcher" (PID 51) exited with exit code 1
2022-06-04 18:42:29.123 UTC [46] LOG:  shutting down
103:M 04 Jun 2022 18:42:29.154 # User requested shutdown...
103:M 04 Jun 2022 18:42:29.154 * Saving the final RDB snapshot before exiting.
103:M 04 Jun 2022 18:42:29.159 * DB saved on disk
103:M 04 Jun 2022 18:42:29.159 # Redis is now ready to exit, bye bye...
2022-06-04 18:42:29.201 UTC [42] LOG:  database system is shut down


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 1102 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
69cb25658efb6f16e4479bb98a2d0278d72e56028865730841ac1efacc5b8d9d
==================== END REBUILD LOG ====================

Сам сервер должен быть в порядке — достаточно места на диске и других ресурсов. Есть какие-то идеи?

Нам, кажется, нужно увидеть больше логов, а именно то, что произошло с этой командой rake.

Пожалуйста, предоставьте вывод команд:

free
df

Также может быть важно, если в вашем логе есть:
WARNING overcommit_memory is set to 0!

У меня есть:

103:M 04 Jun 2022 18:40:07.369 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

Вот остальное, что вы запросили:

root@testserver-2021:/var/discourse# free
              total        used        free      shared  buff/cache   available
Mem:       16005396      353200    13366988        1100     2285208    15316292
Swap:             0           0           0
root@testserver-2021:/var/discourse# free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       343Mi        12Gi       1.0Mi       2.2Gi        14Gi
Swap:            0B          0B          0B
root@testserver-2021:/var/discourse# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            7.7G     0  7.7G   0% /dev
tmpfs           1.6G  1.1M  1.6G   1% /run
/dev/sda1       226G   44G  173G  21% /
tmpfs           7.7G     0  7.7G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           7.7G     0  7.7G   0% /sys/fs/cgroup
/dev/sda15       61M  5.2M   55M   9% /boot/efi
overlay         226G   44G  173G  21% /var/lib/docker/overlay2/c9457cf1821fb558a92c79e55bd6a70153b8ae0388732aa5eef17237b6924c25/merged
overlay         226G   44G  173G  21% /var/lib/docker/overlay2/6d350b54871378d4b0e7ac5d30e236df3bdd1c45cd3b5fb2e9ab67ffe7a1bba1/merged
tmpfs           1.6G     0  1.6G   0% /run/user/0
overlay         226G   44G  173G  21% /var/lib/docker/overlay2/104be98cc5c33e73e4119d2186b6d9d08123ffc79df872f48425e94a66ca6749/merged

Думаю, сообщения об overcommit связаны с тем, что swap равен 0? Странно, что это не менялось с момента существования этого сервера…

Хм… 16 ГБ ОЗУ — это довольно много, поэтому может показаться, что файл подкачки (swap) не нужен. Однако я бы сказал, что его добавление вряд ли навредит. Без просмотра вашего лога я не могу утверждать, что проблема заключается в нехватке памяти. Но если это так, изменение режима перераспределения (overcommit) может помочь, независимо от того, есть у вас файл подкачки или нет.

Вы также можете попробовать
dmesg | egrep -i "oom|memory"
чтобы проверить, не были ли какие-либо процессы завершены из-за нехватки памяти.

Но, как и ранее, наличие большей части вашего лога, скорее всего, поможет.

Edit: ой, добавил -i

Я создал своп и также установил режим перераспределения памяти. К сожалению, ничего не изменилось.

Вот полный лог сборки приложения: https://pastebin.com/raw/R2B8Wneu

Вижу некоторые ошибки Redis, указывающие, что порт занят, но не могу понять, откуда они берутся.

root@testserver-2021:~# sudo lsof -i -P -n | grep LISTEN
systemd       1            root   89u  IPv6  15961      0t0  TCP *:9090 (LISTEN)
systemd-r   573 systemd-resolve   13u  IPv4  10890      0t0  TCP 127.0.0.53:53 (LISTEN)
sshd        676            root    3u  IPv4  20387      0t0  TCP *:22 (LISTEN)
sshd        676            root    4u  IPv6  20389      0t0  TCP *:22 (LISTEN)
docker-pr   913            root    4u  IPv4  23665      0t0  TCP *:9100 (LISTEN)
docker-pr   921            root    4u  IPv6  21827      0t0  TCP *:9100 (LISTEN)
docker-pr   981            root    4u  IPv4  24732      0t0  TCP *:3003 (LISTEN)
docker-pr   989            root    4u  IPv6  22636      0t0  TCP *:3003 (LISTEN)
monitorix  1284       monitorix    3u  IPv4  27978      0t0  TCP *:8080 (LISTEN)

Спасибо за лог — похоже, проблема в настройке S3 (я не смогу помочь с этим, но уверен, что кто-то сможет).

I, [2022-06-05T09:06:10.144445 #1] INFO – : > cd /var/www/discourse && su discourse -c ‘bundle exec rake db:migrate’
rake aborted!
Discourse::SiteSettingMissing: s3_upload_bucket
/var/www/discourse/lib/file_store/s3_store.rb:267:in `s3_bucket’

Хорошо нашли, Эд. Спасибо. Похоже, что s3_bucket в какой-то момент был изменён на s3_upload_bucket, и у меня есть эти переменные в containers/app.yml, что, видимо, и вызвало проблему. По крайней мере, теперь сборка прошла успешно после того, как я заменил DISCOURSE_S3_BUCKET на DISCOURSE_S3_UPLOAD_BUCKET.

Жаль, что такие изменения не сопровождаются проверкой в процессе сборки, чтобы избежать подобных ситуаций — и слава богу, что мы всегда тестируем обновления на тестовой машине.