3 ГБ ОЗУ + 1 ГБ swap-раздела — этого достаточно?

Купленный нами VPS поставляется с 3 ГБ ОЗУ и разделом подкачки (swap) объёмом 1 ГБ. Стоит ли также настроить файл подкачки, или этого достаточно?

Этого достаточно для небольшого экземпляра Discourse.

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

Просто оплатите более мощный VPS с как минимум 8 ГБ ОЗУ. В противном случае вы потратите время впустую.

Это не отвечает на мой вопрос.

Не могу представить запуск Discourse на менее чем 8 ГБ оперативной памяти.

Участник команды Discourse утверждает, что это нормально, так что, наверное, всё в порядке.

Удачи.

Discourse-setup предупредит о любых проблемах с памятью.

Это тоже не отвечает на мой вопрос. Может быть, я сформулировал свой вопрос не очень хорошо?

У меня относительно тихий форум на дроплете Digital Ocean с 2 ГБ оперативной памяти и 50 ГБ диска, и всё работает отлично.

На момент написания руководства по установке Discourse рекомендовался минимум 1 ГБ, но я в какой-то момент обновил конфигурацию.

Если вы предоставите больше информации о размере и нагрузке вашего форума, я уверен, что получите более подробный ответ.

Кажется, установщик Discourse автоматически настраивает файл подкачки (я ничего не делал вручную), так что это, по-моему, отвечает на часть вашего вопроса.

Кажется, он создаёт файл подкачки объёмом 2 ГБ при установке, если обнаруживает, что у вас его ещё нет.

Редактирование: Думаю, это более точно:

Официально минимальные требования составляют 1 ГБ ОЗУ + 2 ГБ swap-памяти — и этого достаточно, если у вас довольно небольшой форум. Хотя с каждым обновлением размер программы немного увеличивается, поэтому, вероятно, наступит время, когда этого будет недостаточно.

Для корректной работы форума и предотвращения сбоев важным показателем является сумма ОЗУ и swap-памяти.

Для обеспечения отзывчивости форума и избежания излишней медлительности предпочтительнее иметь больше ОЗУ. Таким образом, если конфигурации 1 ГБ ОЗУ + 2 ГБ swap достаточно, то 3 ГБ ОЗУ + 1 ГБ swap также будет достаточно и может обеспечить лучшую производительность.

У меня есть два форума, оба довольно небольшие: один работает на конфигурации 1+2, другой — на 2+2.

В прошлом году я писал следующее:

Редактирование: если у вас есть свободное место на диске для добавления swap-памяти, сделайте это — нет никаких веских причин этого не делать, и это может понадобиться. Команда free покажет, сколько памяти используется, а команда vmstat предоставит текущую статистику. Однако средний показатель использования не так важен — важно пиковое использование.

Хорошо, мой вопрос скорее теоретический. Я не могу предсказать популярность форума в данный момент. Что я пытаюсь понять, так это то, что мне следует сделать, чтобы смягчить теоретическую возможность исчерпания оперативной памяти в какой-либо ситуации. Я не знаю, в какой момент Discourse потребляет больше всего памяти — при создании резервных копий, изменении размера изображений, обновлении через консоль администратора или в других случаях. У меня нет представления.

Поэтому мой вопрос: какой файл подкачки следует создать, чтобы гарантировать, что Discourse не упадёт, а просто станет очень медленным в случае нехватки памяти. В то же время я обнаружил, что у меня уже есть раздел подкачки объёмом 1 ГБ, поэтому я подумал: а что, если 3 ГБ реальной памяти + 1 ГБ раздела подкачки окажется недостаточно… Стоит ли также создать файл подкачки на несколько гигабайт с ещё более низким приоритетом (по сравнению с разделом в 1 ГБ). Надеюсь, мой вопрос теперь звучит более понятно.

Если это так, то да. Было бы полезно обновить файл README с инструкциями по установке. Вспоминая старые времена, когда в официальной документации прямо указывалось создать файл подкачки в процессе установки, я сейчас немного запутался: делается ли это автоматически, больше ли это не нужно, или есть какая-то другая причина, по которой это было удалено из официального руководства.

… а что, если он обнаруживает существующий раздел подкачки объёмом 1 ГБ?

Таким образом, продолжение моего вопроса: является ли хорошей идеей наличие двух областей подкачки — одной на основе раздела, а другой на основе файла.

Никаких проблем с наличием нескольких областей подкачки (или, впрочем, нескольких файлов подкачки).

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

Также стоит установить более щедрые параметры перераспределения памяти (overcommit): вы обнаружите соответствующее предупреждение в журнале обновления, если ещё не внесли необходимые изменения.

ПРЕДУПРЕЖДЕНИЕ: overcommit_memory установлен в 0! Фоновое сохранение может завершиться ошибкой при нехватке памяти. Чтобы исправить эту проблему, добавьте ‘vm.overcommit_memory = 1’ в файл /etc/sysctl.conf, а затем перезагрузите систему или выполните команду ‘sysctl vm.overcommit_memory=1’, чтобы изменения вступили в силу.

Об этом уже упоминалось много раз, однако существует сопротивление включению этой настройки в стандартный рецепт установки Discourse. Это такой параметр, который нельзя настроить внутри образа Docker — его необходимо изменять непосредственно на хост-системе.

Всё, что вы можете сделать, — это снизить риски, и если у вас больше средств, вы можете снизить их ещё больше. Этот вопрос касается компромиссов!

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

Если вы ожидаете, что ваш форум может вырасти, вы должны быть готовы со временем увеличивать ресурсы, необходимые для его работы, вместо того чтобы рассчитывать мощность один раз в самом начале.

Я ещё не увеличивал размеры машин, которые использую для своих форумов, но, вероятно, сделаю это — может быть, в этом году, а может, в следующем.

Так и должно быть. Я регулярно настраиваю droplets объемом 1 и 2 ГБ с 2 ГБ подкачки, и они работают. Сейчас процесс восстановления требует много оперативной памяти, но это должно сработать.

Вам нужно лучше воображение.

Я использую столько памяти только на сайтах с примерно миллионом просмотров страниц в месяц и довольно большими базами данных.

Я упомянул об этом сразу после первой установки Discourse (Warnings: overcommit_memory and Transparent Huge Pages). Почему это полезно сделать и в чём причина сопротивления? Я не менял настройку по умолчанию.

Вот что я писал ранее:

В частности:

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

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

Также:

Это делается для увеличения объёма доступной виртуальной памяти (то есть суммы оперативной памяти и файла подкачки). Если оперативная память закончится, начнутся проблемы с производительностью. Но если закончится виртуальная память, процессы не смогут запуститься или будут аварийно завершены или убиты. Ситуация становится серьёзной.

Те из нас, у кого и оперативная память, и диск небольшие, могут не иметь возможности добавить много файла подкачки, но 2 ГБ, похоже, являются хорошим минимумом. (Если у вас 16 ГБ оперативной памяти, файл подкачки может и не понадобиться, но это уже другая история. Когда проблема заключается в сбоях, важно именно их суммарное значение.)

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

Редактирование: эта недавняя тема может быть примером, где небольшая инстанция исчерпала память, и параметр overcommit не был установлен. Однако мы не знаем, решило бы включение overcommit эту проблему — пользователь обновил оперативную память до 8 ГБ.