Поделиться через


Пошаговое руководство. Профилирование приложения SharePoint

В этом пошаговом руководстве рассказывается, как использовать средства профилирования в Visual Studio, чтобы оптимизировать производительность приложений SharePoint. Примером приложения служит приемник событий компонентов SharePoint, который содержит цикл простоя, что ведет к снижению производительности приемника событий компонентов. Профилировщик Visual Studio позволяет находить и устранять самые дорогие (самые медленные) части проекта, также известные как горячий путь.

В этом пошаговом руководстве демонстрируются следующие задачи:

Необходимые компоненты

Для выполнения этого пошагового руководства требуются следующие компоненты:

  • Поддерживаемые редакции Microsoft Windows и SharePoint.

  • Visual Studio 2012.

Создание проекта SharePoint

Сначала создайте проект SharePoint.

Создание проекта SharePoint

  1. В строке меню выберите "Файл>нового проекта">, чтобы отобразить диалоговое окно "Новый проект".

  2. Разверните узел SharePoint в Visual C# или Visual Basic, а затем выберите узел 2010.

  3. В области шаблонов выберите шаблон проекта SharePoint 2010.

  4. В поле "Имя" введите ProfileTest и нажмите кнопку "ОК".

    Откроется мастер настройки SharePoint.

  5. На странице "Указание сайта и уровня безопасности для отладки" введите URL-адрес сайта сервера SharePoint, в котором требуется выполнить отладку определения сайта, или используйте расположение по умолчанию (имя системы http:///).

  6. В разделе " Что такое уровень доверия для этого решения SharePoint?" , нажмите кнопку "Развернуть как решение фермы".

    В настоящее время можно профилировать только решения фермы. Дополнительные сведения об изолированных решениях и решениях фермы см. в разделе "Изолированные решения".

  7. Нажмите кнопку Готово . Проект отображается в Обозреватель решений.

Добавление приемника событий компонентов и компонентов

Затем добавьте в проект компонент вместе с приемником событий для этого компонента. Этот приемник событий будет содержать код для профилирования.

Добавление компонента и приемника событий компонента

  1. В Обозреватель решений откройте контекстное меню узла "Компоненты", нажмите кнопку "Добавить функцию" и оставьте имя в значении по умолчанию Feature1.

  2. В Обозреватель решений откройте контекстное меню компонента Feature1 и нажмите кнопку "Добавить приемник событий".

    В результате в компонент будет добавлен и открыт для редактирования файл с кодом, содержащий несколько закомментированных обработчиков событий.

  3. Добавьте следующие объявления переменных в класс приемника событий.

    // SharePoint site/subsite.
    private string siteUrl = "http://localhost";
    private string webUrl = "/";
    
  4. Замените процедуру FeatureActivated следующим кодом.

    public override void FeatureActivated(SPFeatureReceiverProperties properties)
    {
        try
        {
            using (SPSite site = new SPSite(siteUrl))
            {
                using (SPWeb web = site.OpenWeb(webUrl))
                {
                    // Reference the lists.
                    SPList announcementsList = web.Lists["Announcements"];
    
                    // Add a new announcement to the Announcements list.
                    SPListItem listItem = announcementsList.Items.Add();
                    listItem["Title"] = "Activated Feature: " + properties.Definition.DisplayName;
                    listItem["Body"] = properties.Definition.DisplayName + " was activated on: " +
    DateTime.Now.ToString();
                    // Waste some time.
                    TimeCounter();
                    // Update the list.
                    listItem.Update();
                }
            }
        }
    
        catch (Exception e)
        {
            Console.WriteLine("Error: " + e.ToString());
        }
    }
    
  5. Добавьте следующую процедуру ниже FeatureActivated процедуры.

    public void TimeCounter()
    {
        for (int i = 0; i < 100000; i++)
        {
            for (int j = 0; j < 10000; j++)
            {
                int result = i * j;
            }
        }
    }
    
  6. В Обозреватель решений откройте контекстное меню проекта (ProfileTest), а затем выберите "Свойства".

  7. В диалоговом окне "Свойства" выберите вкладку SharePoint.

  8. В списке конфигурации активного развертывания выберите "Нет активации".

    Выбор этой конфигурации развертывания позволяет в дальнейшем вручную активировать компонент в SharePoint.

  9. Сохраните проект.

Настройка и развертывание приложения SharePoint

Теперь, когда проект SharePoint готов, настройте и разверните его на сервере SharePoint.

Методика настройки и развертывания приложения SharePoint

  1. В меню "Анализ" выберите мастер запуска производительности.

  2. На странице одного из мастера производительности оставьте метод профилирования в качестве выборки ЦП и нажмите кнопку "Далее ".

    В более сложных случаях профилирования можно использовать другие методы профилирования. Дополнительные сведения см. в статье Общие сведения о методах сбора данных по производительности.

  3. На двух страницах мастера производительности оставьте целевой объект профиля в качестве ProfileTest и нажмите кнопку "Далее ".

    Если решение содержит несколько проектов, они появятся в этом списке.

  4. На странице 3 мастера производительности снимите флажок "Включить профилирование взаимодействия с уровнем" и нажмите кнопку "Далее ".

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

  5. На странице четыре мастера производительности оставьте профилирование запуска после того, как мастер завершит флажок, а затем нажмите кнопку "Готово".

    Мастер включает профилирование приложений на сервере, отображает окно обозревателя производительности, а затем создает, развертывает и запускает приложение SharePoint.

Запуск приложения SharePoint

Активируйте компонент SharePoint, запустив код события FeatureActivation.

Запуск приложения SharePoint

  1. В SharePoint откройте меню "Действия сайта" и выберите "Параметры сайта".

  2. В списке действий сайта выберите ссылку "Управление функциями сайта".

  3. В списке компонентов нажмите кнопку "Активировать" рядом с параметром ProfileTest Feature1.

    При этом возникнет пауза из-за вызова цикла простоя в функции FeatureActivated.

  4. На панели быстрого запуска выберите "Списки", а затем в списке "Списки" выберите "Объявления".

    Обратите внимание, что новое извещение о том, что компонент был активирован, добавляется в список.

  5. Закройте сайт SharePoint.

    После закрытия SharePoint профилировщик создает и отображает пример отчета профилирования и сохраняет его в виде VSP-файла в папке проекта ProfileTest .

Просмотр и интерпретация результатов профиля

Теперь, после запуска и профилирования приложения SharePoint, просмотрите результаты теста.

Просмотр и интерпретация результатов профиля

  1. В разделе "Функции, выполняющие большую отдельную работу" отчета о профилировании, обратите внимание, что TimeCounter находится в верхней части списка.

    Это положение означает, что TimeCounter является одной из функций с наибольшим количеством выборок, а значит она — одно из самых узких мест производительности приложения. Это не удивительно, поскольку она была специально так разработана в демонстрационных целях.

  2. В разделе "Функции" "Выполнение большинства отдельных работ" выберите ProcessRequest ссылку, чтобы отобразить распределение затрат для ProcessRequest функции.

    В разделе "Вызываемые функции" ProcessRequestобратите внимание, что функция FeatureActiviated указана в качестве самой дорогой вызываемой функции.

  3. В разделе "Вызываемые функции" нажмите кнопку FeatureActivated.

    В разделе "Вызываемые функции" для FeatureActivated TimeCounterфункция указана в качестве самой дорогой вызываемой функции. В области представления кода функции выделенный код (TimeCounter) является хот-точкой и указывает, где требуется исправление.

  4. Закройте отчет о профилировании выборки.

    Чтобы просмотреть отчет снова в любое время, откройте VSP-файл в окне обозревателя производительности.

Исправление кода и повторное создание приложения

Теперь, когда наиболее часто используемая функция в приложении SharePoint определена, исправьте ее.

Исправление кода и перепрофилирование приложения

  1. В коде приемника событий компонента закомментируйте вызов метода TimeCounter в FeatureActivated, чтобы предотвратить его вызов.

  2. Сохраните проект.

  3. В обозревателе производительности откройте папку Targets и выберите узел ProfileTest .

  4. На панели инструментов обозревателя производительности на вкладке "Действия" нажмите кнопку "Пуск профилирования".

    Если вы хотите изменить любой из свойств профилирования перед перепрофилированием приложения, нажмите кнопку мастера запуска производительности.

  5. Следуйте инструкциям в разделе "Запуск приложения SharePoint" ранее в этом разделе.

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