Сборки занимают очень много времени

Мои пересборки занимают около 10 минут. Кажется, раньше они длились около 5. Так что ничего страшного. Но что означает сообщение об ошибке? У меня появляется что-то похожее на то, что в оригинальном посте выше:

I, [2022-06-20T21:41:47.107238 #1]  INFO -- : > cd /var/www/discourse && [ ! -d 'node_modules' ] || su discourse -c 'yarn install --production && yarn cache clean'
warning "eslint-config-discourse > eslint-plugin-lodash@7.1.0" has unmet peer dependency "lodash@>=4".
warning " > @mixer/parallel-prettier@2.0.1" has unmet peer dependency "prettier@^2.0.0".

Я также планирую добавить сюда больше информации. Я использую облегчённую систему (1 ГБ ОЗУ) и небольшой сайт. У меня работает 2 воркера Unicorn, и каждый из них занимал около 30% памяти, что вызывало сильную подкачку памяти. Поэтому я решил сократить их количество с 2 до 1 (считаю, что один воркер может обрабатывать примерно 10 одновременных соединений). Это дало ОГРОМНЫЙ эффект: загрузка страниц стала практически мгновенной, а количество операций подкачки снизилось в 5–10 раз (в зависимости от загружаемого контента).

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

ABORTING, you do not have enough unicorn workers running
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: Not enough workers>

Так что это просто примечание. Не уверен, сможет ли команда Discourse разобраться с этим или найти решение — обновление через браузер с одним воркером Unicorn.

Похоже на ошибку, особенно учитывая, что система вскоре после этого временно сокращается до одного рабочего процесса unicorn.

Число 2 зашито в код, как и число 1 для уменьшения.

Редактирование: похоже, что это изменение внесло несоответствие.

Я думаю, что ваш пост (и этот ответ) должны быть размещены в новой теме в категории «Ошибки».

Как это работает?

Один Unicorn обрабатывает процесс обновления, в то время как остальные обслуживают текущие запросы?

Следовательно, для выполнения обновлений без простоя требуется минимум два воркера Unicorn…?

Это неверно. Один процесс Unicorn может обрабатывать только один запрос за раз, поэтому, хотя он подходит для небольших групп, мы не рекомендуем его для большинства сайтов.

@Falco Я изучил данные от других администраторов. Как я понимаю, каждый Unicorn запускает новый процесс для каждого входящего соединения. Таким образом, хотя технически соединение обрабатывается по одному, каждый Unicorn может обслуживать несколько одновременных пользователей.

Исходя из опыта, описанного ниже, около 8 процессов Unicorn могут обслуживать примерно 400 одновременных пользователей:

Исходя из этого, получается, что один Unicorn может обрабатывать около 50 одновременных пользователей. Однако я знаю, что объем оперативной памяти и системные ресурсы влияют на количество возможных форков и другие параметры, поэтому я исхожу из предположения, что один воркер Unicorn может обрабатывать 10 одновременных пользователей на системе с низким объемом оперативной памяти (1 ГБ) в нижней границе.

Мои предположения и выводы совершенно неверны? Если да, то какой диапазон одновременных пользователей может обрабатывать один Unicorn в зависимости от системных ресурсов (предположим, что нижняя граница — 1 ГБ, а верхнюю определите сами, исходя из целесообразности)?

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

Это не так. Unicorn при запуске создает фиксированное количество рабочих процессов.

И, как я помню, каждый рабочий процесс запускает 10 потоков.