Производительность
Скорость работы YouGile сильнее всего зависит от количества задач и объёма данных
в текущей открытой компании. Эту информацию по компаниям можно посмотреть с помощью
команды db-stats
(см. раздел Специальные команды YouGile).
YouGile работает быстро, если в каждой из компаний количество задач не превышает 30 тыс. и объём данных не превышает 80Мб (в объём данных не входят заугружаемые файлы, только сами данные задач). В промежутке от 30 тыс. до 50 тыс. задач (и от 80Мб до 120Мб данных) система может начать работать медленнее, а при бОльшем к-ве данных скорость работы может уже быть недопустимой для работы пользователей в системе.
Есть 2 способа контроля производительности в больших командах:
- разбиение работы команды на несколько “компаний”
- удаление (архивирование) старых данных.
Разбиение данных на несколько компаний
В коробочной версии YouGile можно создавать неограниченное количество “компаний”. Каждый пользователь может быть добавлен в несколько компаний одновременно. Если в команде пользуются YouGile более 1000 человек, разбиение на “компании” обязательно для обеспечения долговременного контроля производительности.
Чтобы можно было создавать новые компании необходимо установить поля multiCompany
и
allowAddCompanies
в файле conf.json
(см. раздел Настройка параметров YouGile, файл conf.json)
Удаление старых данных
Чтобы контролировать количество данных в компании, можно периодически удалять старые данные.
Если удалить задачу в системе через интерфейс, она не будет полностью удалена
(это сделано для возможности восстановления удалённых задач). Удалённая задача
влияет на производительность системы (хотя и меньше), поэтому удалённые задачи
необходимо чистить при помощи команды clean-database
(см. раздел Специальные команды YouGile).
Чтобы массово удалить ненужные задачи, можно воспользоваться функционалом сводок. Для этого
необходимо в интерфейсе системы создать сводку, в которой будут по критериям выфильтрованы
те задачи, которые необходимо удалить. Затем в окне настройки сводки нужно зажать клавиши
Alt
и Shift
на клавиатуре и, не отпуская этих клавиш, кликнуть на Удалить сводку
–
появится предупреждение об удалении всех задач в сводке и можно будет согласиться и массово удалить
все ненужные задачи. Эта функция доступна, начиная с версии коробки 1.56
.
Если хочется иметь доступ к старым задачам, можно организовать архивную инсталляцию YouGile, где по отдельному адресу будет доступна система со старой версией данных. Для организации такого архива, можно бесплатно получить ключ лицензии в поддержке YouGile (или лицензию с поддержкой нескольких машин).
Таким образом, регулярная процедура очистки старых данных может выглядеть так:
- проверка объёма данных в компаниях при помощи команды
db-stats
- разворачивание старого состояния базы на другую машину (архив данных)
- удаление старых задач при помощи сводки
- чистка удалённых задач при помощи скрипта
clean-database
Сбор cpuprofile
В некоторых случаях техподдержка YouGile может запросить профиль нагрузки процессора. Это помогает найти причину проблем с производительностью в конкретном случае и предложить решение проблемы. Для того, чтобы собрать профиль нагрузки (cpuprofile), необходимо:
- В
conf.json
добавить поле manageKey и поместить туда секретный пароль, который будет использоваться для запроса на сбор профайла, пример:
...
"manageKey": "some password",
...
-
После этого нужно перезапустить сервер, чтобы настройка применилась.
-
Собирать профайл нужно в момент, когда наблюдаются проблемы с работой системы. Нужно дождаться, когда проблема начнёт проявляться
-
После этого необходимо выполнить curl запрос на машине, где работает yougile:
manageKey="some password"
curl -X POST http://localhost:8001/data/profiler/run -H "Content-Type: application/json" -d "{\"key\": \"$manageKey\", \"seconds\": 100}"
- Запрос будет выполняться 110-200 секунд и после его выполнения в директории yougile/ появится файл
profiler-...cpuprofile
Запуск YouGile в режиме кластера
В некоторых случаях может потребоваться запустить сервис YouGile в режиме кластера из нескольких процессов на одной машине. Поддержка YouGile может рекомендовать этот вариант если нагрузка на сервис потребует распределения по ядрам. В обычном режиме YouGile использует только одно ядро процессора. Здесь далее будет разобрана настройка варианта разделения на 3 процесса на одной машине. Также возможно разделение на несколько машин и на большее количество процессов, эти варианты может предложить поддержка YouGile при необходимости.
Настройка 3-х процессов на одной машине
В файл conf.json
необходимо добавить следующий блок:
"cluster": {
"bootstrapUrl": "http://localhost:8001",
"cookie": "<secret cookie>",
"nodes": {
"http://localhost:8001": "account-main",
"http://localhost:8002": "company-1/1",
"http://localhost:8003": "user-events"
}
}
Затем добавить в директорию yougile/
дополнительные конфигурационные файлы:
conf-account.json
:
{
"include": "./conf.json",
"clusterNodeUrl": "http://localhost:8001",
"port": 8001
}
conf-company.json
:
{
"include": "./conf.json",
"clusterNodeUrl": "http://localhost:8002",
"port": 8002
}
conf-user-events.json
:
{
"include": "./conf.json",
"clusterNodeUrl": "http://localhost:8003",
"port": 8003
}
Здесь <secret cookie>
– это сгенерированная случайная строка,
которая работает как пароль для опознавания нод кластера друг другом.
Эта строка должна быть одна и та же во всех конфигурационных файлах.
Далее необходимо создать 3 процесса: yougile-account
, yougile-company
и yougile-user-events
, каждый из которых запускает сервис с соответствующим
конфигурационным файлом. Пример для systemd
:
yougile-account.service
[Unit]
Description=yougile-account
[Service]
WorkingDirectory=/opt/yougile
ExecStart=/opt/yougile/server --conf conf-account.json
Environment="NODE_ENV=production"
Environment="NODE_OPTIONS=--max-old-space-size=10000"
Environment="HOME=/root"
LimitNOFILE=500000
LimitNPROC=500000
[Install]
WantedBy=multi-user.target
yougile-company.service
[Unit]
Description=yougile-company
[Service]
WorkingDirectory=/opt/yougile
ExecStart=/opt/yougile/server --conf conf-company.json
Environment="NODE_ENV=production"
Environment="NODE_OPTIONS=--max-old-space-size=10000"
Environment="HOME=/root"
LimitNOFILE=500000
LimitNPROC=500000
[Install]
WantedBy=multi-user.target
yougile-user-events.service
[Unit]
Description=yougile-user-events
[Service]
WorkingDirectory=/opt/yougile
ExecStart=/opt/yougile/server --conf conf-user-events.json
Environment="NODE_ENV=production"
Environment="NODE_OPTIONS=--max-old-space-size=10000"
Environment="HOME=/root"
LimitNOFILE=500000
LimitNPROC=500000
[Install]
WantedBy=multi-user.target
В этом примере каждому процессу выделяется по 10Гб оперативной
памяти (max-old-space-size
) и указывается домашняя директория /root
.
Замените эти параметры, при необходимости. См. также Запуск, остановка. Настройка сервиса
Необходимо убедиться, что обычный процесс YouGile, который не был настроен на кластеризацию, остановлен. После этого запустить эти 3 процесса и проверить, что система работает в браузере или в десктоп-приложении.