Перейти к основному содержимому

Производительность

Скорость работы 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), необходимо:

  1. В conf.json добавить поле manageKey и поместить туда секретный пароль, который будет использоваться для запроса на сбор профайла, пример:
...
"manageKey": "some password",
...
  1. После этого нужно перезапустить сервер, чтобы настройка применилась.

  2. Собирать профайл нужно в момент, когда наблюдаются проблемы с работой системы. Нужно дождаться, когда проблема начнёт проявляться

  3. После этого необходимо выполнить curl запрос на машине, где работает yougile:

manageKey="some password"
curl -X POST http://localhost:8001/data/profiler/run -H "Content-Type: application/json" -d "{\"key\": \"$manageKey\", \"seconds\": 100}"
  1. Запрос будет выполняться 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 процесса и проверить, что система работает в браузере или в десктоп-приложении.