четверг, 11 ноября 2010 г.

Планирование ресурсов

Один из популярных вопросов - какую конфигурацию нам нужно сделать для увеличения производительности, и более оптимального распределения ресурсов? Нужно ли разносить сервисы и т.п.

Ответ в первом приближении можно найти достаточно просто. Для этого необходимо замерить использование 3х классических ресурсов: используемое процессорное время, используемая память, обращение к системе ввода-вывода.

Рассмотрим конфигурацию, которая описана здесь http://dvprofessionals.blogspot.com/2009/08/blog-post_21.html
Основные процессы:
  1. sqlservr
  2. DocsVision StorageServer
  3. DocsVision Workflow Server
  4. ExecLogic
  5. ExecLogic*32
  6. w3wp

Распределение процессорного времени 
Счетчик: Process | % processor time




Что видно. Основной потребитель - сервер баз данных. Особой постоянной нагрузки нет, только пики. Но если нужно оптимизировать этот ресурс, то MS SQL Server можно перенести на другой сервер.

Использование памяти.
Счетчик: Process | Working Set




Основной потребитель - процесс ExecLogic*32 (это процесс, который непосредственно обрабатывает функции бизнес-процессов. В данном случае 32 разрядные функции).
Это не критично - данному процессу можно ограничить память при помощи настройки в Консоли настройки.
Помимо этого, следующим процессам можно ограничить объем потребляемой памяти:
ExecLogic - в консоли настройки
w3wp - настройка рециклинга (Recycling) в пуле приложений IIS (Application pool)
sqlservr - настройкой памяти в свойствах сервера MS SQL Server.

Использование системы ввода-вывода
Счетчик: Process | IO Data operations /sec


Данный счетчик фиксирует не только обращения к диску, но и сетевые операции. И тут лидерами будут ExecLogic32 и DocsVision StorageServer, из-за частых сетевых вызовов.

Отдельно полезно будет посмотреть длину средней очереди к диску. Но этот счетчик не относится к конкретному процессу, а характеризует производительность в целом.

Какой можно сделать вывод. Для данной конкретной конфигурации не требуется разделения на несколько серверов. Однако, при росте первым кандидатом на переезд будет MS SQL Server.

Будет полезно, если кто-либо из гуру по системному администрированию покритикует методики измерения в комментариях.

4 комментария:

  1. А что значит высокая занятость процессора StorageServer'ром? Версия 4.1. Проц 2хIntel Xeon E5430(2.66 Ghz) Загрузка часто доходит до 100%

    ОтветитьУдалить
  2. Два предположения:
    1. Проверка прав. Сервер делает это при возврате результатов поиска, или других наборов данных.
    2. Обработка сетевых соединений. Для проверки можно переключить на HTTP. В этом случае данный протокол будет обрабатываться веб-сервисом StorageServerService.asmx, и нужно проверить загрузку процессора процессом w3wp

    ОтветитьУдалить
  3. Пробовал переключатся на HTTP. Создается несколько процессов w3wp каждый из которых отъедает по 15-25%

    ОтветитьУдалить
  4. Каждый отдельный процесс w3wp - это пул приложений: Application Pool. Следовательно только один из них относится к DocsVision. Для проверки можно остановить остальные пулы, если приложения, работающие на них не очень критичны.

    ОтветитьУдалить