Установка минимального количества потоков

Иногда при работе Web-клиента может наблюдаться снижение производительности даже при условии соблюдения всех системных требований. Это может выражаться в виде периодического замедления в начале рабочего дня или после рассылки писем со ссылкой на Web-клиент, в таких случаях замедление обычно продолжается не более 1-2 минут. Время отклика страницы может увеличиваться до минуты.

Причина такого поведения заключается в слишком долгой адаптации сервера Web-клиента к повысившейся активности пользователей.

Решением ситуации является установка минимального числа потоков, которое соответствовало бы операционному состоянию сервера Web-клиента. Значение устанавливается в конфигурационном файле по адресу /usr/lib/docsvision/webclient/DocsVision.WebClient.runtimeconfig.json.

Минимальное число потоков определяется в соответствии с числом активных пользователей (максимальному числу активных-сессий). Более точное значение можно определить, проанализировав показатели счетчика производительности в течение рабочего дня:

  1. Установите средства dotnet-counter и dotnet-stack для Linux.

  2. Запустите средство dotnet-counter и проанализируйте с его помощью количество потоков:

    ./dotnet-counters  collect --counters "System.Runtime[threadpool-thread-count]" -p XXXXX (1)
    1 -p XXXXX замените на PID процесса ВК
  3. В результате в каталоге средства появится файл counters.csv со значением счетчика в разное время.

  4. Среднее значение счетчика под нагрузкой можно использовать как минимальное число потоков.

    Укажите его в конфигурационном файле /usr/lib/docsvision/webclient/DocsVision.WebClient.runtimeconfig.json в параметре runtimeOptions.configProperties.System.Threading.ThreadPool.MinThreads:

    {
      "runtimeOptions": {
        "tfm": "net6.0",
        "frameworks": [
          {
            "name": "Microsoft.NETCore.App",
            "version": "6.0.0"
          },
          {
            "name": "Microsoft.AspNetCore.App",
            "version": "6.0.0"
          }
        ],
        "configProperties": {
          "System.GC.Server": true,
          "System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
          "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true,
          "System.Threading.ThreadPool.MinThreads": 100 (1)
        }
      }
    }
    1 "System.Threading.ThreadPool.MinThreads" — минимальное количество потоков.

    Обратите внимание! Конфигурационный файл будет перезаписан при установке обновления. Рекомендуется изменять настройку в случае, если наблюдаются замедления в работе Web-клиента во время резкого увеличения числа активных пользователей (например, в начале рабочего дня или после рассылки писем со ссылкой на Web-клиент). Можно также превентивно планировать эту конфигурацию при нормальной работе, если ожидается большое число одновременных пользователей.

  5. Перезапустите dvwebclient.