Возможно, у вас заканчивается оперативная память (RAM), и из-за этого механизм OOM Killer завершает работу случайных процессов, например sshd, что приводит к разрыву соединения и возникновению проблем.
Если OOM Killer активен, соответствующая информация должна быть в выводе dmesg, файле /var/log/messages или в логах journalctl.
Я сомневаюсь, что проблема в нехватке оперативной памяти; скорее всего, дело в том, что я упрямо использую консоль PuTTY вместо консоли DO.
Поэтому я перейду к предложению выше от @pfaffman, особенно после того, как обнаружил, что консоль PuTTY отключается даже тогда, когда я использую её для чего-то совершенно иного, чем управление Discourse.
@pfaffman Я ничего не указывал — использовал все настройки по умолчанию для Droplet, полагаясь на то, что команда DigitalOcean обеспечит разумное поведение.
Сначала я попробую установить keep-alive, как предложил @omarfilipвыше, затем займусь ситуацией с файлом подкачки, а после этого последую предложению @pfaffman использовать оригинальную консоль DO (если настройка keep-alive позволит мне продолжить использование консоли PuTTY, я буду использовать её, так как она гораздо удобнее аналога от DO).
Поскольку мне помогает так много отзывчивых людей, я хочу ещё раз изложить свои причины для объединения Ghost и Discourse: на мой взгляд, это идеальный инструмент для написания технической документации и обеспечения наилучшей поддержки в обсуждении этих материалов. Моя цель — рассмотреть вопросы идентификации и управления учётными записями (IAM) с использованием нескольких интересных провайдеров IAM в формате PaaS; эта тема недостаточно хорошо освещена (по крайней мере, на мой взгляд, основанный на многолетнем опыте использования подобных сервисов).
Чтобы «протестировать в бета-режиме» мой интегрированный инструмент Ghost/Discourse, я решил подробно описать весь процесс создания и тестирования этого инструмента. Таким образом, все, кто мне помогает, должны знать, что эта работа направлена на поддержку сообществ Discourse, Ghost и Digital Ocean.
Если вы использовали установку в один клик от Digital Ocean, а не официальную стандартную установку Discourse, то у вас, скорее всего, не настроен файл подкачки (swap). В результате при пересборке вы исчерпаете оперативную память, если её объем не превышает 2 ГБ.
Вы можете выполнить следующие команды:
cd /var/discourse
./discourse-setup
Это создаст файл подкачки, если это необходимо.
Если вы хотите получить помощь по установке в один клик от Digital Ocean и «полагаться на специалистов DO для обеспечения корректной работы», то вам следует рассчитывать на их поддержку.
Однако, раз я уже пишу, более простой способ убедиться, что проблема не в PuTTY (что могло бы сэкономить много времени на бесполезную настройку параметров PuTTY) — это попробовать консоль. Если вы еще не запускали discourse-setup, то я почти уверен, что проблема заключается в нехватке места в файле подкачки.
Возможно, вы сделали вывод, что я использовал однокликовую установку от Digital Ocean, и считаете, что мне следует полагаться на DO:
Если вы хотите получить помощь с однокликовой установкой от Digital Ocean и хотите «полагаться на сотрудников DO в обеспечении разумного поведения», то вам следует полагаться на них в плане поддержки.
Моя ссылка на однокликовую установку исходит из недавнего письма от Discourse:
Я искренне ценю вашу помощь, Jay , зная, что вы зарабатываете на жизнь, помогая людям с Discourse. Несмотря на то, что я не выгляжу потенциальным клиентом, вы потратили время, чтобы вытащить меня из сложной ситуации.
Мне удалось установить обновление до версии 2.7.0.beta2, и это оказалось проще простого, как только я узнал, что PuTTY ведёт себя некорректно независимо от применённых мною настроек keep-alive. Поэтому я переключился с аутентификации по SSH на пару «идентификатор пользователя / пароль», вошёл на хост droplet и успешно выполнил команду ./launcher rebuild app.
Большое спасибо всем, кто предоставил части решения.
Значит, у вас всё-таки есть swap, и мои предположения были неверны. Жаль, потому что это должно было быть простое исправление.
Это облегчение после того, как я ложно вас обвинил!
И ужасно слышать, что PuTTY так плох. Не понимаю, как он продолжает оставаться рекомендуемым SSH-клиентом для Windows.
Кажется, сейчас есть какой-то клиент, который является частью той самой подсистемы Linux, но версия Windows, которую я регулярно использовал, — это Windows 98.
Все современные операционные системы поставляются со встроенными SSH-клиентами, поэтому сторонние клиенты обычно не требуются. Даже в терминале Windows достаточно ввести SSH. Это должно работать, если ваша система Windows обновлена.
Эта долгая история имеет счастливый конец и может быть охарактеризована как «буря в стакане воды». Я многому научился о Discourse и, как следствие, планирую остаться здесь надолго. Вот подробное описание счастливого конца:
Моя проблема при обновлении с Beta1 до Beta2 проявилась в виде тайм-аута консоли PuTTY. Я интерпретировал это как колоссальный сбой в задаче обновления Discourse и потратил много времени на изучение «внутренностей» Discourse — кроличья нора, в которую я счастливо нырнул без необходимости.
Решение моей проблемы чрезвычайно простое (как только вы знаете, куда «надавить») — просто 1, 2, 3, как показано ниже:
(Тот факт, что я начал с слишком большого интервала «keep-alive», заставил меня поверить, что PuTTY на самом деле ужасное программное обеспечение, и я потратил много времени на переключение с доступа к droplet через SSH на аутентификацию по [id, паролю], необходимую для собственной консоли Digital Ocean (которая действительно плоха). Обратите внимание, что этот эксперимент полностью реабилитирует инструмент PuTTY.
@Falco открыл нам «коллективные глаза», указав просто использовать встроенный OpenSSH в Windows 10 (спасибо Скотту Хэнселману).
Поскольку я уже обещал @codinghorror написать лучший в мире документ, представляющий Discourse миру, в знак благодарности за его (и его команды) помощь в том, чтобы я понял Discourse, @pfaffman позволил мне сделать предложение @Falco первой частью моего документа.
Отличная особенность tmux в том, что он позволяет открывать несколько панелей одновременно, каждая со своим запущенным оболочкой, но используя одно и то же единственное SSH-соединение. Более того, вы также можете открывать несколько «окон» одновременно, что-то вроде вкладок с дополнительными панелями внутри них.
Привет @sunjam, похоже, проблему можно решить с помощью новой версии gem omniauth-vkontakte 1.7.0.
Я создал запрос на слияние (pull request) для сопровождающего плагина. В качестве временного решения вы можете изменить ссылку на GitHub в вашем файле app.yml на