Спасибо за все детали. Хорошо, что вы это сделали:
но, скорее всего, это действие сохранится только до следующей перезагрузки. После перезагрузки его нужно будет выполнить снова. См. Мнение MKJ о конфигурации развёртывания Discourse для советов по тому, как сделать это постоянным.
Возможно, у вас слишком мало памяти (имеется в виду RAM + swap), хотя 2+4 должно быть достаточно. Пожалуйста, выполните следующие быстрые диагностические команды и опубликуйте результаты:
cat /etc/lsb-release
uptime
df -h /
free
swapon
vmstat 5 5
dmesg|egrep -i "memory|oom|kill"
ps auxrc
Также поделитесь здесь вашим файлом app.yml, но не указывайте пароли и секретные токены внутри него!
Если у вас есть возможность установить два SSH-соединения, вы можете использовать одно для запуска пересборки приложения, а другое — чтобы отслеживать, что происходит на машине. Мне нравится чередовать:
vmstat 5 5
ps auxrc
Возможно, вы используете свопирование на удалённый диск — сетевое хранилище (NAS) — и это известно как проблема. Это будет очень медленно. Возможно, это вызывает тайм-аут, и в этом заключается проблема. Может быть, есть способ настроить тайм-аут.
Я нашёл это — возможно, это поможет?
(Тайм-аут по умолчанию в systemd составляет 90 секунд, по крайней мере, в некоторых версиях systemd, так что это вполне подходит).
Вы можете попытаться обойти это, увеличив TimeoutStartSec в юните systemd для PostgreSQL (или даже глобально), хотя это, возможно, лишь скроет проблему до тех пор, пока следующая служба вдруг не перестанет запускаться.
Редактирование: если это так, то этот совет может быть полезен:
Вы можете раскомментировать в
/etc/systemd/system.confследующие строки:DefaultTimeoutStartSec=90s DefaultTimeoutStopSec=90sи изменить значение на то, которое считаете подходящим.