Уведомления
Очистить всё

бот на Sinatra на VPS с 1 ГБ: сколько воркеров Puma ставить?

4 Сообщения
4 Пользователи
1 Реакции
394 Просмотры
Максим О
Сообщения: 22
Автор темы
Собрал свой gem студент
Присоединился: 2 года назад
[#74]

бот с расписанием пар на Sinatra + SQLite, в марте переселил его с ноутбука на самый дешёвый VPS за 550 ₽, 1 ядро и 1 ГБ. puma стартует с конфигом из какого-то гайда на 4 воркера, и сервер уходит в swap. сколько вообще надо? делал для своей группы, а теперь им пользуется весь поток, человек 200, пишут в основном утром, пока все едут к девяти в Петергоф на пары


3 ответа
armen_pet
Сообщения: 30
Собрал свой gem DevOps-инженер
Присоединился: 4 года назад

На одно ядро и 200 человек воркеры не нужны совсем: запускай Puma в одиночном режиме и несколько потоков. Каждый воркер это отдельный процесс со своей памятью, у тебя их четыре по 80-100 МБ плюс мастер. Примерно так:

# config/puma.rb
workers 0
threads 3, 3
port ENV.fetch("PORT", 4567)
environment ENV.fetch("RACK_ENV", "production")

Ну и SQLite в том же гигабайте тоже хочет память под кэш.


Ответ
TimurK62
Сообщения: 31
Читает чужие PR бэкенд-разработчик
Присоединился: 3 года назад

С SQLite и потоками один нюанс: пишет она по одному, и если два запроса пишут одновременно, второй получит database is locked. Включи WAL и busy_timeout, для бота хватит с запасом. На такой нагрузке Puma с тремя потоками будет занимать 60-70 МБ.


Ответ
kirill_spb
Сообщения: 27
Собрал свой gem разработчик инструментов
Присоединился: 4 года назад

Ещё совет: systemd-юнит с Restart=always, чтобы бот сам поднимался после перезагрузки VPS. Хостеры иногда перезагружают ночью без предупреждения


Ответ