С тех пор как я попробовал плагины AI (а затем снова удалил их), мой сервер полностью зависает при выполнении /admin/upgrade.
Не каждый раз, но примерно в 80% случаев.
Обычно полностью зависает весь экземпляр EC2, и мне приходится выполнять жесткую перезагрузку через веб-интерфейс AWS EC2.
Сегодня зависание произошло снова. К моему удивлению, система не зависла полностью. При открытии корневой URL-адреса теперь отображается:
Ой
Программное обеспечение, управляющее этим форумом, столкнулось с непредвиденной проблемой. Приносим извинения за неудобства.
Подробная информация об ошибке была записана в лог, и было автоматически сгенерировано уведомление. Мы разберёмся в этом.
Никаких дополнительных действий не требуется. Однако, если ошибка повторяется, вы можете предоставить дополнительные сведения, включая шаги для воспроизведения ошибки, опубликовав тему в разделе обратной связи сайта.
Сейчас я попробую снова перезагрузить систему и выполнить обычную команду sudo ./launcher rebuild app, которая помогала до сих пор. Держу кулаки, чтобы сегодня тоже сработало.
Мой вопрос
Может ли кто-нибудь подсказать, куда можно посмотреть в файлах логов или что ещё проверить, чтобы получить хотя бы сообщение об ошибке, объясняющее почему происходят зависания?
Я использую экземпляр AWS EC2 типа «t2.medium» с 2 vCPU и 4 ГиБ оперативной памяти.
Объём жёсткого диска составляет 100 ГиБ, свободно 60 ГиБ.
Если это поможет, я могу обновить экземпляр «t2.medium» до более крупного типа.
Я просто не понимаю, почему эта конфигурация работала безупречно (в течение многих лет) до моего тестирования официального плагина ИИ, и зависания при обновлении стали возникать только после его удаления.
Ещё одно изменение: версия ПО, до которой вы обновляетесь, стала в последнее время требовать больше памяти. Поэтому, я думаю, проблема может быть в чём угодно из этого.
Временное и обратимое увеличение объёма оперативной памяти на экземпляре, вероятно, самый простой способ проверить, является ли нехватка памяти причиной проблемы, хотя это и потребует нескольких перезагрузок. Другой вариант — добавить файл подкачки (swap), что также является обратимым решением.
Это немного не по теме, но я очень хочу понять. Почему своп, который занимал 200 МБ, помог, когда было свободно 2 ГБ оперативной памяти?
(Я понимаю, что в мире дюймов система СИ может сбивать с толку, потому что она использует десятичную шкалу, но почему черт возьми Ми? Я кое-как понимаю Ги, если это сокращение от гига, но тогда мега должно быть Ме?)
Думаю, исходная проблема, скорее всего, заключалась в том, что какой-то процесс был убит, потому что на машине закончилась память (остерегайтесь OOM-киллера). Добавление подкачки означало, что память не была исчерпана. Эти два вывода команды free, возможно, не рассказывают всей истории, если только они не были очень тщательно получены в момент наибольшей нагрузки на машину. Интересно, на мой взгляд, именно пиковое использование подкачки.
Стоит отметить, что перерасход памяти мало что имеет общего с Redis. Просто Redis любезно подсказывает, что это значение должно быть установлено правильно.
Итак, 4 ГБ — это как раз на грани во время сборки, если предположить, что последний скриншот показывает самый напряжённый момент.
И ещё один момент, который я не могу понять: почему у других возникает нехватка памяти, а у меня, кто использует множество плагинов и компонентов, не было никаких проблем что именно создаёт эту разницу?
Я использовал слово «было», потому что сейчас у меня 8 ГБ из-за ИИ (и для меня разница в цене не была столь существенной, но это уже другая история).
Стоит ли перенести эту тему в другое место, или мы рассматриваем это как объяснение того, почему использование подкачки помогло?
В любом случае. Для других новичков вот один пример, где немного говорится о нехватке памяти и её причинах:
Это очень частый вопрос, когда обновление не удаётся. Но причина этого редко объясняется.
Спасибо @uwe_keim — я предполагаю, что именно эти настраиваемые параметры ядра стали причиной необходимости добавления swap-пространства, даже если оно не использовалось. (То же самое относится к случаю, если бы потребовалось добавить много оперативной памяти, поскольку общая доступная память равна сумме RAM и swap.)
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] никогда