# Весь компьютер зависает во время обновления

**URL:** https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592
**Category:** Self-hosting
**Tags:** server-resources
**Created:** [31.Январь.2024 06:21:15 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592 "2024-01-31T06:21:15Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![uwe\_keim](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/uwe_keim/32/326762_2.png) [@uwe\_keim](https://meta.discourse.org/u/uwe_keim)
#### Post date: [31.Январь.2024 06:21:15 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/1 "2024-01-31T06:21:15Z")

</div>

С тех пор как я попробовал плагины AI (а затем снова удалил их), мой сервер полностью зависает при выполнении `/admin/upgrade`.

Не каждый раз, но примерно в 80% случаев.

Обычно полностью зависает весь экземпляр EC2, и мне приходится выполнять жесткую перезагрузку через веб-интерфейс AWS EC2.

Сегодня зависание произошло снова. К моему удивлению, система не зависла полностью. При открытии корневой URL-адреса теперь отображается:

> Ой
> 
> Программное обеспечение, управляющее этим форумом, столкнулось с непредвиденной проблемой. Приносим извинения за неудобства.
> 
> Подробная информация об ошибке была записана в лог, и было автоматически сгенерировано уведомление. Мы разберёмся в этом.
> 
> Никаких дополнительных действий не требуется. Однако, если ошибка повторяется, вы можете предоставить дополнительные сведения, включая шаги для воспроизведения ошибки, опубликовав тему в разделе обратной связи сайта.

Сейчас я попробую снова перезагрузить систему и выполнить обычную команду `sudo ./launcher rebuild app`, которая помогала до сих пор. Держу кулаки, чтобы сегодня тоже сработало.

### Мой вопрос

Может ли кто-нибудь подсказать, куда можно посмотреть в файлах логов или что ещё проверить, чтобы получить хотя бы сообщение об ошибке, объясняющее _почему_ происходят зависания?

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [31.Январь.2024 07:31:24 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/2 "2024-01-31T07:31:24Z")

</div>

> [@Uwe Keim](#):
>
> плагины ИИ

Официальный плагин ИИ?

Я бы запустил это из консоли и посмотрел, где оно застревает, и поделился бы логами.

---

<div class="post-metadata">

### Author: ![uwe\_keim](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/uwe_keim/32/326762_2.png) [@uwe\_keim](https://meta.discourse.org/u/uwe_keim)
#### Post date: [31.Январь.2024 08:00:43 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/3 "2024-01-31T08:00:43Z")

</div>

Да, это официальный плагин.

Я удалил его, снова исключив плагины из `app.yml` и затем пересобрав. Возможно, этого недостаточно?

> [@sam](#):
>
> Я бы выполнил это

Что имеется в виду под «этим»? Команда `sudo ./launcher rebuild app`?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [31.Январь.2024 10:17:16 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/4 "2024-01-31T10:17:16Z")

</div>

Каковы характеристики вашего сервера?

На мой взгляд, для онлайн-обновлений в наши дни минимум требуется сервер с 4 ГБ ОЗУ и 2 ГБ файла подкачки.

---

<div class="post-metadata">

### Author: ![uwe\_keim](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/uwe_keim/32/326762_2.png) [@uwe\_keim](https://meta.discourse.org/u/uwe_keim)
#### Post date: [31.Январь.2024 10:33:45 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/5 "2024-01-31T10:33:45Z")

</div>

Я использую экземпляр AWS EC2 типа «t2.medium» с 2 vCPU и 4 ГиБ оперативной памяти.

Объём жёсткого диска составляет 100 ГиБ, свободно 60 ГиБ.

Если это поможет, я могу обновить экземпляр «t2.medium» до более крупного типа.

Я просто не понимаю, почему эта конфигурация работала безупречно (в течение многих лет) до моего тестирования официального плагина ИИ, и зависания при обновлении стали возникать только после его удаления.

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [31.Январь.2024 11:55:23 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/6 "2024-01-31T11:55:23Z")

</div>

> [@uwe\_keim](#):
>
> Эта конфигурация работала безупречно (в течение многих лет) до моего тестирования официального плагина AI, и эти зависания при обновлении стали возникать только после его удаления.

Ещё одно изменение: версия ПО, до которой вы обновляетесь, стала в последнее время требовать больше памяти. Поэтому, я думаю, проблема может быть в чём угодно из этого.

Временное и обратимое увеличение объёма оперативной памяти на экземпляре, вероятно, самый простой способ проверить, является ли нехватка памяти причиной проблемы, хотя это и потребует нескольких перезагрузок. Другой вариант — добавить файл подкачки (swap), что также является обратимым решением.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [31.Январь.2024 16:16:09 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/7 "2024-01-31T16:16:09Z")

</div>

Попробуйте добавить swap.

---

<div class="post-metadata">

### Author: ![uwe\_keim](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/uwe_keim/32/326762_2.png) [@uwe\_keim](https://meta.discourse.org/u/uwe_keim)
#### Post date: [31.Январь.2024 16:27:31 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/8 "2024-01-31T16:27:31Z")

</div>

Спасибо, ребята, я поищу в Google, как это сделать, и затем сделаю 🙂.

### Обновление 1

Я добавил 8 ГиБ своп-пространства:

```txt
$ free -h
               total used free shared buff/cache available
Mem: 3.8Gi 290Mi 2.9Gi 1.0Mi 677Mi 3.3Gi
Swap: 8.0Gi 0B 8.0Gi

```

Я опубликую обновление здесь после следующих обновлений, чтобы сообщить, помогло ли это.

### Обновление 2

Только что выполнил `/admin/upgrade` и отслеживал использование ОЗУ:

```txt
$ free -h
               total used free shared buff/cache available
Mem: 3.8Gi 1.4Gi 1.5Gi 50Mi 891Mi 2.0Gi
Swap: 8.0Gi 200Mi 7.8Gi

```

Обновление прошло успешно. 🎉 Надеюсь, так и останется.

### Обновление 3

Спустя несколько дней и обновлений у меня больше не было зависаний.

Поэтому я считаю, что своп-пространство стало решением. Ещё раз спасибо всем, кто помогал мне в решении этой проблемы.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [01.Февраль.2024 20:54:43 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/9 "2024-02-01T20:54:43Z")

</div>

Это немного не по теме, но я очень хочу понять. Почему своп, который занимал 200 МБ, помог, когда было свободно 2 ГБ оперативной памяти?

(Я понимаю, что в мире дюймов система СИ может сбивать с толку, потому что она использует десятичную шкалу, но почему черт возьми Ми? Я кое-как понимаю Ги, если это сокращение от гига, но тогда мега должно быть Ме?)

---

<div class="post-metadata">

### Author: ![Firepup650](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/firepup650/32/465200_2.png) [@Firepup650](https://meta.discourse.org/u/Firepup650)
#### Post date: [01.Февраль.2024 21:02:27 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/10 "2024-02-01T21:02:27Z")

</div>

> [@Jagster](#):
>
> но почему вообще Mi? Gi я ещё как-то понимаю

Mi, полагаю, для мебибайтов, а Gi для гибибайтов.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [01.Февраль.2024 21:05:45 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/11 "2024-02-01T21:05:45Z")

</div>

Спасибо. Я этого не знал, это очевидно. Но это мебибайт 😉

И для тех, кто тоже этого не знал 😏

> **[Mebibyte](https://simple.wikipedia.org/wiki/Mebibyte)**
>
> The mebibyte (symbol: MiB) is a unit of information or computer data storage. The mebibyte is closely related to the megabyte (MB). The megabyte refers to 106 bytes = 1 000 000 bytes (see binary prefix for background). The two units are relatively close together, but mistaking the two has nevertheless led to problems. The unit MiB was defined by the International Electrotechnical Commission (IEC) in December 1998. Use of mebibyte and related units is strongly endorsed by IEEE and CIPM and is b...

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [01.Февраль.2024 22:15:10 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/12 "2024-02-01T22:15:10Z")

</div>

> [@Jagster](#):
>
> Это немного не по теме, но я действительно хочу понять. Почему подкачка, которая использовала 200 МБ, помогла, когда было свободно 2 ГБ оперативной памяти?

Думаю, исходная проблема, скорее всего, заключалась в том, что какой-то процесс был убит, потому что на машине закончилась память (остерегайтесь OOM-киллера). Добавление подкачки означало, что память не была исчерпана. Эти два вывода команды free, возможно, не рассказывают всей истории, если только они не были очень тщательно получены в момент наибольшей нагрузки на машину. Интересно, на мой взгляд, именно пиковое использование подкачки.

Но также есть вопрос о настраиваемых параметрах ядра, упомянутых в  
[Мнении Майкла К. Джонсона о конфигурации развёртывания Discourse](https://meta.discourse.org/t/mkjs-opinionated-discourse-deployment-configuration/193355),  
которые у меня установлены правильно, но которые, возможно, у многих людей настроены неверно.

> [@mcdanlj](#):
>
> ## Конфигурация ядра
> 
> Redis (один из ключевых компонентов, на которых построен Discourse) настоятельно рекомендует отключить прозрачные большие страницы, а я также разрешаю перерасход памяти.
> 
> ```plaintext
> echo 'sys.kernel.mm.transparent_hugepage.enabled=never' > /etc/sysctl.d/10-huge-pages.conf
> echo 'vm.overcommit_memory=1' > /etc/sysctl.d/90-vm_overcommit_memory.conf
> sysctl --system
> 
> ```

Стоит отметить, что перерасход памяти мало что имеет общего с Redis. Просто Redis любезно подсказывает, что это значение должно быть установлено правильно.

---

<div class="post-metadata">

### Author: ![uwe\_keim](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/uwe_keim/32/326762_2.png) [@uwe\_keim](https://meta.discourse.org/u/uwe_keim)
#### Post date: [02.Февраль.2024 06:04:42 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/13 "2024-02-02T06:04:42Z")

</div>

Только что запустил ещё одну команду `/admin/upgrade` и оставил оболочку открытой, чтобы вручную вызывать `tree -h` каждую секунду или около того.

Самые высокие значения использования памяти, которые мне удалось найти, были следующими:

```txt
$ free -h
               total used free shared buff/cache available
Mem: 3.8Gi 3.2Gi 120Mi 80Mi 542Mi 266Mi
Swap: 8.0Gi 276Mi 7.7Gi

```

Обновление прошло успешно.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [02.Февраль.2024 07:21:00 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/14 "2024-02-02T07:21:00Z")

</div>

Итак, 4 ГБ — это как раз на грани во время сборки, если предположить, что последний скриншот показывает самый напряжённый момент.

И ещё один момент, который я не могу понять: почему у других возникает нехватка памяти, а у меня, кто использует множество плагинов и компонентов, не было никаких проблем 🤔 что именно создаёт эту разницу?

Я использовал слово «было», потому что сейчас у меня 8 ГБ из-за ИИ (и для меня разница в цене не была столь существенной, но это уже другая история).

Стоит ли перенести эту тему в другое место, или мы рассматриваем это как объяснение того, почему использование подкачки помогло?

В любом случае. Для других новичков вот один пример, где немного говорится о нехватке памяти и её причинах:

> [@Problem with Upgrade \[error 137\]](https://meta.discourse.org/t/problem-with-upgrade/293652):
>
> For [standard install](https://meta.discourse.org/t/142537?silent=true) site have this error log for most recent upgrade: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\* Please be patient, next steps might take a while \*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* Cycling Unicorn, to free up memory Restarting unicorn pid: 545 Waiting for Unicorn to reload. Waiting for Unicorn to reload.. Waiting for Unicorn to reload... Waiting for Unicorn to reload.... Waiting for Unicorn to reload..... Waiting for Unicorn to reloa…

Это очень частый вопрос, когда обновление не удаётся. Но причина этого редко объясняется.

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [02.Февраль.2024 08:11:29 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/15 "2024-02-02T08:11:29Z")

</div>

@Jagster @uwe_keim пожалуйста, отправьте вывод следующих команд:

```plaintext
cat /proc/sys/vm/overcommit_memory 
cat /sys/kernel/mm/transparent_hugepage/enabled 

```

На моих системах выводится:

```plaintext
# cat /proc/sys/vm/overcommit_memory 
1
# cat /sys/kernel/mm/transparent_hugepage/enabled 
always madvise [never]

```

---

<div class="post-metadata">

### Author: ![uwe\_keim](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/uwe_keim/32/326762_2.png) [@uwe\_keim](https://meta.discourse.org/u/uwe_keim)
#### Post date: [02.Февраль.2024 09:13:12 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/16 "2024-02-02T09:13:12Z")

</div>

```txt
$ cat /proc/sys/vm/overcommit_memory
0

```

и

```plaintext
$ cat /sys/kernel/mm/transparent_hugepage/enabled
always [madvise] never

```

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [02.Февраль.2024 09:14:28 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/17 "2024-02-02T09:14:28Z")

</div>

Спасибо @uwe_keim — я предполагаю, что именно эти настраиваемые параметры ядра стали причиной необходимости добавления swap-пространства, даже если оно не использовалось. (То же самое относится к случаю, если бы потребовалось добавить много оперативной памяти, поскольку общая доступная память равна сумме RAM и swap.)

---

<div class="post-metadata">

### Author: ![uwe\_keim](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/uwe_keim/32/326762_2.png) [@uwe\_keim](https://meta.discourse.org/u/uwe_keim)
#### Post date: [02.Февраль.2024 09:18:49 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/18 "2024-02-02T09:18:49Z")

</div>

Я могу в любой момент изменить настройки сервера, если вы порекомендуете это сделать.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [02.Февраль.2024 12:08:18 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/19 "2024-02-02T12:08:18Z")

</div>

```bash
root@foorumi-hel:/var/discourse# cat /proc/sys/vm/overcommit_memory
0
root@foorumi-hel:/var/discourse# cat /sys/kernel/mm/transparent_hugepage/enabled
всегда [madvise] никогда

```

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [02.Февраль.2024 13:13:02 UTC](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592/20 "2024-02-02T13:13:02Z")

</div>

> [@Uwe Keim](#):
>
> изменяйте настройки сервера в любое время, если рекомендуете

Я рекомендую!

Это исправит проблему при будущих перезагрузках (обратите внимание, что файлы перезаписываются без проверки текущего состояния):

```plaintext
echo 'sys.kernel.mm.transparent_hugepage.enabled=never' > /etc/sysctl.d/10-huge-pages.conf
echo 'vm.overcommit_memory=1' > /etc/sysctl.d/90-vm_overcommit_memory.conf
sysctl --system

```

[Следующая страница](https://meta.discourse.org/t/whole-machine-hangs-during-upgrade/293592.md?page=2)
