Книги, научные публикации Pages:     | 1 | 2 | 3 | 4 |

Microsoft Пусть не иссякнет в Microsoft тот дух товарищества, который возможность единомышленникам из АСЕ Team написать эту книгу. ...

-- [ Страница 2 ] --

При мониторинге многих и счетчиков также иногда генерируется большой объем данных, который занимает много места на диске. Следует баланс между числом наблюдаемых объектов и частотой чтобы размер фай ла журнала оставался в разумных пределах.

Используя при генерации журналов производительности длинные интервалы между замерами, вы no-прежнему сможете наблюдать флуктуации данных, происходящие между этими интервалами.

Подробнее о работе с временными диапазонами в журналах в Генерация и просмотр журналов.

Генерация и просмотр журналов Одно из наиболее ценных свойств системного монитора Ч его способность вести журнал. Регулярная регистрация параметров производительности позволит вам сравнивать показатели до и после оборудования, программ или приложения. На пример, ваша компания решила начать программу, продавая наиболее популярные товары с 50-процен тной скидкой. Распродажа вызвала грандиозный рост трафика на Web-сайте компании. Наличие журналов производительнос ти вам выявить рост числа пользовательских транзак ций: достаточно сравнить параметры производительности до, во производительности приложения и после распродажи. На основании информации уда ется определить, имеются ли на Web-сайте лузкие места и в со стоянии ли текущие аппаратные средства выдержать подобные маркетинговые Вы можете зафиксировать данные системного монитора за оп ределенный период времени с целью их последующего анализа и сравнения. Это позволит вам наблюдать за изменениями пове дения системы во времени, и выявить тенденции s ее работе, которые незаметны при наблюдении в реальном времени. Например, исследуя журналы производительности, вы установили, что загрузка диска наиболее велика с 20 до 22 ча сов и незначительна в остальное время. Возможно, данная тен денция связана с интенсивным вводом данных в это время или с выполнением резервного копирования.

ПРИМЕЧАНИЕ При использовании системного монитора лучше всего вести журнал локально на за которым ведется наблюдение. Затем содержимое журнала при необходимости можно проанализировать на другом компьютере. Если же вы работать по сети, уменьшите число и ограничившись только более важными.

Для создания журнала производительности на сервере Win dows 2000 с использованием системного монитора выполните следующие Щелкните Start (Пуск), Programs (Программы), затем укажите на Administrative Tools и Performance (Системный монитор).

2. на левой панели узел Performance Logs And Alerts (Оповещения и журналы производительности).

3. Выберите в дереве консоли узел Counter Logs (Журналы счет чиков).

4. Щелкните правой по правой панели и выберите из контекстного меню New Log Settings (Новые параметры жур нала), как показано на рис. 4-4.

Глава Monitor. С fa Рис. 4-4. Создание журнала 5. Введите имя журнала з диалоговом окне New Log Settings (Но вые параметры показанном на рис. 4-5, и щелкни те ОК. Мы выбрали для этого журнала имя IBuyspy.

г '' Х Рис. 4-5. Новые параметры журнала 6. Имя, выбранное вами в качестве названия, в заго ловке диалогового окна Performance Log (Журнал производи тельности). Щелкните кнопку Add (Добавить), чтобы открыть диалоговое окно Select Counters (Выбор счетчиков).

Мониторинг приложения 7. Добавьте интересующие вас счетчики, их и щелкая кнопку Add (Добавить). щелкните кнопку Close (Зак рыть). На General (Общие) окна Perfor mance Log (Журнал производительности) вы также можете установить интервал измерений.

8. Для установки параметров файла журнала, таких, как распо ложение, файла, тип файла и максимальный размер, щел кните вкладку Log Files (Файлы журналов). В качестве типа используйте CSV, особенно если сбор данных пред полагаете проводить в течение длительного времени. Как по казано на рис. 4-6, в данном примере мы сохраняем файл ло кально.

ПРИМЕЧАНИЕ Если сбор данных предполагается в течение длительного то следует выбирать длинные интервалы измерений. Особен но это если данные в двоичном файле: двоичные всегда больше, чем фай лы CSV.

Рис. 4-6. Параметры файла журнала 9. Чтобы задать расписание ведения журнала, щелкните вклад ку Schedule (Расписание). Если время остановки журнала не указано, то данные регистрируются до тех пор, пока вы не остановите его вручную.

Глава ОК. Имя журнала должно появиться на правой панели. Зеленый значок рядом с именем журнала указывает на то, что генерация журнала началась, как показано на рис.

Рис. 4-7. Генерация журнала началась Когда сбор данных будет остановлен, значок станет красным.

Вы можете запускать и останавливать генерацию журнала вручную, щелкнув имя журнала правой кнопкой и выбрав из контекстного меню Start (Пуск) или Stop.

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

Щелкните узел System Monitor (Системный монитор) на левой панели, чтобы отобразить системный монитор на правой.

2. Наверху панели щелкните кнопку View Log File Data (Просмотр данных файла журнала), чтобы открыть диалого вое окно Select Log File (Выбор файла журнала), показанное на рис. 4-8. Перейдите в соответствующую папку, выберите файл журнала, который собираетесь просмотреть, и щелкните Open (Открыть).

3. Щелкнув кнопку Add (Добавить), выберите для просмотра интересующие вас счетчики из файла. Когда вы закроете окно Add Counters (Добавить счетчики), выбранные счетчики по явятся в окне системного монитора, как показано на рис. 4-9.

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

i j Рис. 4-8. Диалоговое окно Log File Рис. 4-9. Выбор счетчиков Вам также предоставлено право ограничить просматриваемую часть журнала.

После загрузки журнала в системный монитор щелк ните кнопку Properties наверху панели.

В диалоговом окне System Monitor Properties Сис темный монитор) щелкните вкладку Source (Источник).

Внизу вкладки Source (Источник) переместите ограничители диапазона таким образом, чтобы в него попало только инте ресующее вас временное окно, как показано на рис.

j Console Root Рис. 4-10. Информация о файле журнала 4. (Не Для задания иных параметров воспользуй тесь другими вкладками диалогового окна System Monitor Properties (Свойства: Системный монитор), 5. Щелкните чтобы вернуться в главное окно системного монитора и просмотреть выбранный диапазон данных.

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

Для мониторинга производительности удаленного компьютера зам потребуется право на доступ к этом компьютеру по сети. Оно следующим образом.

Из папки Administrative Tools (Администрирование) запустите Программу Local Security Policy (Локальные параметры безо пасности).

Мониторинг приложения 2. Дважды щелкните папку Local Policies (Локальные чтобы раскрыть ее.

3. щелкните папку User Rights Assignment (Назначение прав Появится список определенных в систе ме 4. Найдите привилегию Access This Computer from the Network (Доступ к компьютеру из сети) и ее двойным щелч ком. Раскроется список и групп, обладающих данной привилегией.

5. добавления к списку новых или групп кните кнопку Add User or Group (Добавить).

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

Запустите системный монитор и нажмите + чтобы от крыть диалог Add Counters (Добавить счетчики);

2. В списке Select Counters From Computer (Выберите счетчики с компьютера) выберите или введите имя нужного компьютера.

При удаленном мониторинге производительности следует учиты вать скорость линии связи. Если она невысока кбит/с или медленнее), то следует переключиться из режима диаграммы, используемого по умолчанию, в режим отчета. Это позволит уменьшить передаваемых по сети данных и избежать за держек при отображении текущих значений параметров.

счетчики и экземпляры, применяемые для выявления лузких мест В этом разделе мы рассмотрим некоторые, наиболее часто ис пользуемые счетчики производительности (естественно же, не все имеющиеся в наличии, так как для этого потребовалась бы отдельная книга). Именно на основе их удается отыс кать лузкие места, связанные с использованием процессора, памяти или диска. Мы приведем по несколько практических при меров поиска лузких мест каждого типа.

86 Глава Описание каждого счетчика ся в оперативной системе.

тесь к если вам не удалось найти нужный счет чик. Длл этого следуйте алгоритму счетчика, описанному ранее в главе. Когда по диалоговое окно Add Counters (Добавить щелкните описание которого вы хотите затем Ч кнопку Explain места при процессора При анализе любого Web-приложения чаще всего контролируют загрузку процессора. Процессоры сервера выполняют сложные операции и поэтому логично, что источник проблем начинают искать с них. Общая информация об исполь зовании процессора в объекте Processor (Процессор), цель мониторинга связанных с процессо ром, Ч выявление потенциальных лузких мест на сервере. Как показывает практика, загрузку процессора следует ограничить значением в 75% для каждого из них, хотя в зависимости от при роды приложения и типа его допустимы короткие всплески до Высокая загрузка процессора вызывает час тые переключения контекста (обсуждаются далее), в результате чего растут накладные расходы. Поэтому, хотя система, возмож но, и сможет работать при 90-процентной загрузке процессоров, пропускная способность при этом может по сравнению с загрузкой в 70-75%.

Для многопроцессорных систем каждый процессор отображается з диалоговом окне Add Counters (Добавить счетчики) как отдель ный экземпляр. Счетчик Total (Все экземпляры) позволя ет также контролировать среднее значение для всех процессо ров. В системе системный монитор отобра жает обобщенный экземпляр и один экземпляр оба они соответствуют единственному процессору системы.

Далее описаны счетчики, значения которых представляют инте рес при поиске лузких мест на уровне процессора. Мы также рас скажем, как использовать счетчики объекта Processor (Процессор).

Х % Processor Time (% загруженности процессора) доля приходящаяся на исполнение процессором Мониторинг отличных от потока простоя. Для ее определяют время активности потока простоя на заданном интервале, которое затем вычитают из общей длительности интервала.

(Поток простоя каждого процессора тогда, ког да нет других готовых к исполнению потоков.) Этот счетчик считается основным индикатором активности процессора и отображает среднее значение времени занятости процессо ра на протяжении заданного интервала. Его значение вычис ляют, значение, когда процессор неактивен, из ста процентов, Х % Time работы в привилегированном режи ме) Ч доля приходящаяся на исполнение процес сором кода в привилегированном режиме. При обращении к системному сервису Windows этот часто исполняется в привилегированном режиме, чтобы получить доступ к за крытым системным данным. Эти данные защищены от пото ков, исполняющихся в пользовательском режиме. Обращения к системе могут явными или неявными, такими, как стра ничные ошибки или прерывания. В отличие от некоторых ста рых операционных систем, в Windows помимо традиционной защиты на основе пользовательского и режимов реализуется защита подсистем на уровне границ процессов. Часть действий, выполняемых Windows no запро су приложения, может исполняться в пользовательском режи ме внутри процесса подсистемы, а не только в привилегиро ванном режиме.

Х % User Time (% работы в пользовательском режиме) Ч доля времени, приходящаяся на исполнение процессором кода в пользовательском режиме. Значение данного счетчика долж но находиться в разумном соотношении со значениями счет чика % Privileged Time (% работы в привилегированном режи ме) для объектов System (Система) и Processor так как это показатели времени активности и общей суммы вре мени активности.

Х % Interrupt Time (% времени прерываний) Ч доля интерва ла измерений, приходящаяся на прием и обслуживание про цессором аппаратных прерываний. Его значения косвенным образом показывают активность генерирующих 88 Глава таких, как системные часы, мышь, драйверы дис ков, линии сетевые платы и другие периферий ные устройства. Обычно эти устройства прерывают процес сор по завершении исполнения ими некоторой операции или когда им требуется обслуживание. На прерывания нор мальное исполнение потоков приостанавливается. Большин системных часов генерируют каждые миллисекунд, что составляет фон активности пре рываний. Счетчик среднее время обработки пре в процентах от общего времени Х Interrupts/sec (Прерываний в секунду) Ч средняя аппаратных процессора как количество случаев в секунду. Сюда не входят отложенные вызовы процедур (deferred procedure calls, DPC) Ч они учиты ваются отдельно. Счетчик показывает генериру прерывания таких, как системные часы, мышь, дисков, линии коммуникаций, сетевые пла ты и другие периферийные устройства. Обычно эти устрой ства прерывают процессор по завершении исполнения ими операции или когда им требуется обслуживание, Нормальное исполнение потоков при этом ся. Системные часы обычно генерируют прерывания каждые 10 миллисекунд, что составляет основной фон активности Эффективность работы компьютера может определена по значениям счетчиков из таблицы для многопроцессорных компьютеров Счетчик Описание Processor Time Суммарное процессорное время для всех потоков процесса Отражает активность всех процессоров % Processor Time компьютера. Это среднее активности всех процессоров за время де ленное на число процессоров. Следует иметь в что значение счетчика 50% и тогда, когда все процессоры только на половине заданного интервала времени, и когда половина процессоров за на протяжении всего интервала Мониторинг производительности приложения Решение типичных связанных с перегрузкой процессора места, связанные с использованием процессоров, возни кают, когда количество активных потоков в системе или прило жении превышает возможности процессоров. В результате за просы на исполнение потоков помещаются в очередь, и пока пос не станет высокая загрузка процес соров, что приводит к увеличению времени отклика системы.

Если процессоры сервера постоянно сильно загружены (90% или более), то обычно это приводит к образованию очереди потоков, ожидающих Ч это и лузкое место. Такой по стоянно высокий загрузки процессоров неприемлем для сервера.

Например, наблюдая производительность на котором расположен единственный Web-сайт, использующий приложение СОМ +, написанное на Visual Basic б, вы обнаруживаете, что при ложение СОМ+ использует более 90% процессорного времени.

Из-за подобной загрузки процессора снижается способность Web-приложения обрабатывать новые к сайту.

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

ПРИМЕЧАНИЕ При исследовании загрузки про цессора следует учитывать роль данного компьюте ра и типы выполняемых им работ. Высокая загруз ка процессора на сервере базы данных менее чем на Web-сервере.

Существует два способа ликвидации лузких мест, с процессором. Первый на компьютер более быст рых или дополнительных процессоров. Однако, во-первых, это временная мера, и во-вторых, этот способ недешев. При следу ющем всплеске трафика на Web-сайте вам придется снова уста дополнительное оборудование или заменять старые 90 Глава новыми и более быстрыми. и более продуктив ный способ Ч программное обеспечение, что бы выявить конкретный или часть приложения, которые становятся лузкого места. Как пра прежде чем покупать новые аппаратные средства, следует попытаться повысить производительность программного обеспе чения. Помимо счетчиков объекта Processor (Процессор) в System предусмотрены и другие, позволяющие вы лузкие места в использовании процессора.

Объект System System (Система) и связанные с ним счетчики отражают сводную информацию по потокам, исполняемым процессором.

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

Х Processor Queue Length (Длина очереди процессора) Ч ко личество потоков в очереди процессора. В отличие от диско вых счетчиков (обсуждаемых далее в этой главе) данный счет чик учитывает только готовые, но не исполняющиеся потоки.

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

Одним из способов определения наличия в вашем приложе нии лузкого места, связанного с процессором, является на блюдение за счетчиком Queue Length- He уменьшающаяся длина очереди на фоне перегруженного и выше) процессора Ч очевидный показатель наличия тако го лузкого При высокой загрузке процессора значение Queue Length не должно быть равным 2 или более ное время. Если же это так, когда процессор загружен мало, то скорее всего имеет место некая блокировка, а не лузкое место.

Кроме того, значение счетчика Interrupt Time (Про времени косвенным образом свидетель Мониторинг производительности приложения о повышенной активности дисковых сете вых и других прерывания;

Х Context Switches/sec (контекстных переключений/сек) Ч это общая частота переключения с одного потока на другой для всех процессоров компьютера. Переключение контекста про исходит, когда поток добровольно отдает процессор, когда он вытесняется готовым к исполнению по током с более высоким приоритетом или при переключении контекста между пользовательским и режимами для вызова сервиса Executive или подсистемы. Ре гистрируемое значение равно сумме числа кон текстов пере по всем процессорам компьютера. V System (Система) и Thread предусмотрены счетчики переключения контекста. Они показывают разность двух последних измерений, деленную на интервал между из мерениями.

Система, в которой из-за неэффективного кода приложения или плохой системной архитектуры регистрируется частое переключение контекста, может потреблять очень много ре сурсов. Ваша задача Ч в любом случае снизить объем пере ключений контекста на сервере приложения или базы данных.

Фактически переключения контекста не дают серверу выпол нять полезную работу, так как ресурсы процессора ются на обслуживание потока, который теперь не может вы полняться, так как ожидает логического или физического ре сурса либо приостановил свое исполнение. К симптомам час того переключения контекстов относятся низкая пропускная способность на фоне высокой загрузки процессора, которая возникает при уровне частоты переключений в 15 000 или выше. Чтобы определить, является ли частота переключения контекста чрезмерной, сравните ее со значением Privileged Time (Процессор\% работы в привилегированном режиме). Если данный параметр равен 40% или более и час тота переключения контекста высока, то самое время искать причину частого переключения контекста.

Наконец, при мониторинге производительности системы дует убедиться в том, что значение счетчика 92 Глава отражающего общесистемную частоту переклю контекста, разно или близко к значению счетчика для Наблюдая за ними в течение длительного времени, вы выясните допус тимый диапазон различий в их показаниях.

места при работе с диском Место на диске Ч это постоянная проблема. Независимо от того, сколько пространства на ваших серверах, ваши про граммы его Однако лузкие места при работе с диском связаны со а не с дисковым пространством. Диск тор мозит работу, когда компоненты, выполняющие чтение или запись на диск, не способны угнаться за частью системы.

В отличие от объема дискового пространства другие компонен ты дисковой подсистемы, в которых могут лузкие места, вряд ли можно назвать широко известными. Их несколь ко: шина шина устройства, контроллер диска и блок головок. Каждый из них способен ограничивать производи тельность.

Системный монитор измеряет различные показатели и производительности диска. Для полноты картины использования ресурсов диска необходимо учитывать значения нескольких счетчиков, причем в отдельных случаях вам придет ся наблюдать за ними несколько дней. В результате, чтобы уста новить, является ли дисковая подсистема лузким местом ваше го сервера или нет, вам, возможно, придется некото рые математические расчеты. Подробно необходимые формулы описаны в приводимом далее Однако прежде позвольте представить некоторые счетчики, необходимые при выявлении лузких мест дисковой подсистемы. Их применение позволит вам проблемы, планировать увеличение дис подсистемы, а также измерять ее загрузку. Значения не которых счетчиков потребуются в упомянутых выше формулах.

* Average Disk Queue Length длина очереди диска) Ч среднее число запросов на чтение и запись, помещенных в очередь выбранного диска за указанный интервал времени.

Х Disk Read Queue Length (средняя длина очереди диска) Ч среднее число запросов на чтение, помещен Мониторинг производительности приложения в очередь выбранного диска за вре мени.

Х Average Disk Write Queue Length (средняя длина очереди диска) Ч среднее число запросов на запись, помещен ных в очередь диска за указанный интервал вре мени.

Х Average Disk [Среднее чтения с диска Ч среднее считывания данных с диска (в секундах).

Х Average Disk [Среднее время к диска Ч среднее время пересылки данных диска в секундах.

Х Disk Reads/sec (Обращений чтения с Ч частота операций чтения с диска.

Х Disk Writes/sec (Обращений записи на Ч та операций записи на диск.

Как ACT Team выявила лузкое место дисковой подсистемы Группе разработок Microsoft потребовалось оценить серверные аппаратные средства двух На сер верах предполагалось размещать реляционную базу данных Web приложения, разрабатываемого группой. С Web-приложени ем одновременно должны были работать несколько тысяч пользо вателей;

таким образом, для успеха проекта аппаратных средств имел решающее значение. Специалисты планировали провести несколько нагрузочных тестов опреде лить их влияние на использование ресурсов сервера базы дан ных. Для этого на Visual Basic было написано средство нагрузоч ного моделирующее реальные условия работы приложения. Оно исполнялось клиентскими компьютерами, как Для взяли сотню клиентских Один экземпляр исполняющейся тестовой программы моделировал 5 каждый из которых подключался к разным базам данных сервера (от db1 go db5). Производствен ный процесс использовал результаты исполнения клиентами по средством ADO или OSQL пакетных файлов SQL, соответствую щих отдельным операциям. Пакетные файлы генерировались путем трассировки работы с сайтом пользователя-человека с 94 Глава помощью SQL Profiler. В процессе тестирования следующие операции:

Х загрузка страницы регистрации в системе;

Х выбор имени пользователя и нажатие клавиши ввод;

Х загрузка страницы заданий;

Х предоставление менеджеру сведений о реальных временных затратах;

Х загрузка страницы просмотра Х и сохранение Х передача задания другому ресурсу.

Клиентские компьютеры настроили таким чтобы во вре мя теста выполнялись обращения ко всем пятистам базам дан ных. Это позволило избежать ситуации, когда на одну базу при шлось бы большинство транзакций. После клиентских компьютеров запустили программу тестирования, которая тала в течение 20 минут (15 минут отводилось на Далее 20 минут регистрировались показатели сти сервера базы данных.

В программе тестирования были заданы 10- и за держки при выполнении запросов к базам данных. мо делируемый пользователь начинал свою работу спустя случайно выбранный промежуток времени от общего начала теста и вы полнял одну операцию. Затем он ожидал 10 или 60 секунд и вы следующую операцию.

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

Расчеты показали, что число операций ввода-вывода превысило число, заявленное производителем как максимум, при котором диски еще обеспечивают хорошую производительность.

Параметры производительности, собранные при выполнении тестов с и 60 секундными задержками, указывали на нали чие лузкого места в подсистеме сервера Чтобы про верить это, мы подсчитали значения полученных параметров тивности физического диска;

Мониторинг производительности приложения Кол-во операций а/в на 1 диск = + / Число дисков Если бы рассчитанное число на один диск превзошло возможности сервера, то это доказало бы существование го места в подсистеме. Максимальные возможности дисков и результаты расчета числа операций на один диск при ведены ниже. что показатель максимальных возмож диска в RAID 5 всех расчетах равен 85 ввода-вывода на один диск.

Сценарий с 10-секундным временем ожидания для сервера 1.

диска = 85 операций ввода-вывода на один диск Рассчитанное число операций на 1 диск [269,7 + ] / число операций на 1 диск = 113, операций на один диск При значении операций на один диск на сервере 1 воз никает лузкое место в дисковой подсистеме, так как возможно сти последней 85 операциям на один диск.

Сценарий с 10-секундным временем ожидания для сервера 2.

Возможности диска = 85 операций ввода-вывода на один диск Рассчитанное число операций на 1 диск = [136,3 + / Рассчитанное число операций ча 1 диск = 77, на один диск Загрузка в 77,7 операций на один диск меньше дисковой подсистемы сервера 2, равной 85 операциями на один диск, так что лузкое место в данном случае не возникает, Сценарий с временем ожидания для сервера 1.

Возможности = 85 операций ввода-вывода на один диск Рассчитанное число операций на 1 диск = [294,8 + ] / Рассчитанное число операций на 1 диск = 116, операций на один диск При уровне в операции на один диск на сервере 1 возни кает лузкое место в дисковой подсистеме, так как ее возможно сти Ч всего 85 операций на один диск.

96 Глава Сценарий с временем ожидания для сервера 2.

Возможности диска = 85 операций ввода-вывода на один диск число операций на 1 диск = [68.9 + ] / Рассчитанное число операций на 1 диск = 41. операций на один диск Загрузка в операции на один значительно ниже возмож ностей подсистемы сервера 2, равной 85 операциями на один диск, так что лузкое место в данном случае не ет. При числе на один диск, равным и на сервере 1 возникает лузкое место, так как его возможности, по данным нагрузку в 85 операций ввода-вывода на один диск.

Влияние архитектуры дисковой подсистемы на производительность Многие современные Web-приложения взаимодействуют с вером базы данных. Если не все, то многие из протестированных нами приложений использовали SQL Server 2000, и в большин стве случаев нам удавалось добиться значительного прироста производительности за счет сервера базы данных.

Этот прирост достигался за счет оптимизации схемы базы данных или параметров использования дисков. При проек тировании архитектуры базы данных вам потребуется опреде лить, каким образом данные и журналы будут считываться и за писываться на диск. Например, записывать ли журнал на RAID устройство или на обычное? Если ваш выбор окажется неправиль ным, то в подсистеме возникнет лузкое место. В одном таких случаев мы смогли доказать наличие или отсутствие лузко го места с помощью формул. Подробности данного проекта и использованные формулы описаны в приведенном выше примере.

Память При анализе производительности Web-приложенил вам придет ся является ли недостаток памяти следствием ее утечки или ошибки в приложении, или же система пере гружена и требует модернизации аппаратных средств. В этом разделе мы рассмотрим счетчики, позволяющие установить на личие и причины лузких мест в памяти. (Заметьте, что помимо Мониторинг приложения системного монитора и другие средства анализа исполь зования памяти. Возможно, вам следует их изучить, так как они позволяют сократить необходимое время мониторинга системы.) Х Page faults/sec (Ошибок страницы/сек) среднее число страничных ошибок в секунду. Оно как число стра ниц в секунду, при обращении к которым произошла ка, и так как при каждом таком обращении затронута только одна страница, то это число равно числу обращений, вызвав ших страничные ошибки. Счетчик регистрирует как жесткие (требующие обращения к диску) ошибки, так и (ког да страница может быть найдена в памяти). Большинство про цессоров способны обрабатывать большое число мягких ошибок без существенных Однако жесткие ошибки, требующие обращения к диску, вызывают значитель ные задержки.

Х Bytes (Доступно байт) Ч указывает количество памяти, доступных процессу в данный момент. Счетчик Pages/ sec (Обмен отражает количество страниц, кото рые либо считываются с диска жестких страничных ошибок, либо на диск освобождения рабо чего набора процесса страничных ошибок.

Х Pages (Чтений Ч частота повторной загрузки страниц с диска для обработки страничных ошибок.

Счетчик число операций без учета числа загруженных результате каждой из них. Жесткая ошибка возникает при обращении процесса к странице виртуальной памяти, которая в данный момент отсутствует в рабочем на боре или другом месте памяти и должна быть считана с диска. Этот счетчик Ч основной регистрации страничных ошибок, вызывают общесистемные за Он включает как операции считывания страниц из кэша файловой системы (обычно по запросу приложений), так и операции считывания из жаемых в память. Чтобы определить среднее число страниц, считываемых за одну операцию, сравните со значением 98 Глава Х Pages (Запись Ч частота, с которой страницы записываются на диск освобождения места в памяти. На диск только измененные страницы, так что скорее всего, содержат данные, а не код. Этот счетчик показывает число операций, не учитывая число ниц, записанных в результате из них. Оно равно раз ности между двумя последовательными измерениями, делен ной на интервал между Х Pages/sec (Обмен Ч частота считывания стра ниц с диска и записи их на диск в результате стра ничных ошибок. Этот счетчик Ч основной для регистрации страничных ошибок, вызывающих общесистемные Он показывает сумму (Па и Значение измеряется в числе страниц, поэтому его можно напрямую сравнивать со значениями гих счетчиков страниц, таких, как (Оши бок страницы/сек). Он включает как операции считывания страниц из кэша системы (обычно по запросу при так и операции считывания из не файлов, отображаемых в память.

Как ACT Team выявила утечку памяти На данном примере мы покажем, как нам удалось определить утечку памяти в приложении, переданном нашей группе на тирование производительности. Наш аналитик встречался с работчиками с целью определения стандартных пользовательс ких сценариев данного Web-приложения. Разработчиков коило использование памяти приложениями исполняю щимися на Web-сервере. Аналитик пришел к выводу, что лучший способ проблем использования памяти Ч провести серию нагрузочных испытаний. На основании предоставленных разработчиками сценариев поведения пользователей были созда ны сценарии тестирования. При выполнении короткого нагрузоч ного теста в журналы производительности записывалось исполь зование ресурсов сервера, на котором были размещены прило жения СОМ+. Во время этого тестирования аналитик наблюдал потребление памяти в около 20 Мбайт. Он Мониторинг производительности приложения обратил внимание на то, что и через три часа после ния теста эта память не была освобождена. Данные послужили поводом к исследованиям потребления памяти приложением (табл. 4-2). Для анализа работы приложе ния с памятью был выполнен непрерывный нагрузоч ный тест. В результате обнаружилось, что помимо высокой актив ности за время теста значительно увеличился объем, выделенной приложению памяти, а объем свободной виртуаль памяти сервера стал крайне мал (табл. Через три часа после окончания теста из 671 Мбайт выделенных 640 не были освобождены. Все выглядело таким что основной расход виртуальной памяти прихо дился на удовлетворение процесса dllhost. В течение часового теста объем выделенной памяти возрос лишь в преде лах с 38 до 59 При 12-часовом тесте рост оказался зна чительно выше Ч от 368 до 671 Мбайт, Память не освобожда лась до тех пор, пока сервер не перезагрузили. Далее процесс dllhost проанализировали с целью определить процессы, деятель ность которых вызвала его работу, и конкретный про отвечающий за утечку памяти. Когда такой процесс был установлен, профилирование его кода позволило разработчику точно определить место в программе, где работа с памятью ве лась неправильно. Конечно, при использовании кода, не возникает такое количество проблем управления тью, как для неуправляемого кода.

4-2. Результаты часового теста ~ Максимум / Windows 2000 IIS 5.0 ~ общего 55% времени процессора 0,5% общего времени процессора 41% доступно Мбайт Мбайт Память: 0, Процесс памяти Мбайт Мбайт Процесс Dllhost: выделено 38 Мбайт 100 Глава Таблица 4-3. Результаты теста - Максимум / Windows 2000 IIS 5.0 ~ общего времени процессора 69% 100% общего времени общего времени процессора 100% Память: доступно 56 Мбайт 196 Мбайт Память: 51 Процесс выделено памяти Мбайт Процесс Dllhost: выделено памяти 368 Мбайт 671 Мбайт При поиске утечек памяти следует работать со счетчиками bytes Bytes исключительного пользования) и ess\ Working Set множество). Обычно при нали чии утечки памяти значения Proces$\Private Bytes и Process\ Working а значение bytes ся. В этом позволяет убедиться Диспетчер задач: достаточно определить PID и наличие его с вашим приложением. При проверке на наличие утечек памяти тест необходимо длительное время, чтобы установить ре акцию приложения в условиях истощения доступной памяти.

Создание и настройка оповещений Сервис Performance Logs and Alerts (Оповещения и журналы про применяют для генерации оповещений о на ступлении заданных событий, связанных с можно так настроить оповещение о падении объема памяти Web-сервера ниже 20 Мбайт, чтобы оно:

Х вносило записи з журнал событий Х отправляло сетевое сообщение заданному пользователю;

Х генерировало журнал параметров производительности;

Х исполняло заданную программу.

В ряде случаев повышают эффективность тестов Например, при выполнении расширенного нагрузочного теста. Допустим, тест должен выполняться в тече ние 24 часов, причем особый интерес представляет то, что про Мониторинг производительности приложения исходит с памятью Web-серзера. Вы можете создать ние, в журнал запись всякий раз, когда происходит всплеск показаний счетчика (Об мен Таким образом, вам не придется вручную отыс кивать всплески в огромном журнале производительности. Вы легко выделите их из журнала событий, просто отфильтровав.

Оповещение создается следующим образом.

Откройте Системный для чего щелкните Start (Пуск), выберите Programs выберите Administrative Tools (Администрирование) и щелкните Performance (Системный монитор).

2. Дважды щелкните Performance Logs and Alerts (Оповещения и журналы затем щелкните Alerts (Опо вещения). На правой панели отобразится список ранее опре деленных если они есть. Зеленый значок озна чает, что оповещение активизировано, красный Ч что оно отключено, 3. правой кнопкой пустое место на правой панели и выберите New Alert Settings (новые параметры оповещений).

4. В поле Name введите название оповещения, затем щел кните ОК.

5. к оповещению, а также счетчики, пороги сра батывания и интервал измерений задается на вкладке General (Общие). Чтобы указать которые необходимо вы полнить при срабатывании сигнала, перейдите на вкладку Action (Действие), а для определения расписания за условиями срабатывания возможностями вкладки Schedule (Расписание).

ПРИМЕЧАНИЕ Для создания или изменения фигурации журнала зам потребуется полный доступ к следующему подразделу реестра:

Queries Обычно администраторы имеют доступ по умолчанию. Они вправе предоставить его другим Глава через меню Security программы Regedt32.exe. Кроме для запуска сервиса Performance Logs and устанавливает ся с ОС и в фоновом ре жиме) вам потребуются права на запуск и ку системных Администраторам такие права даны по умолчанию, и они могут предоставить их другим пользователям посредством групповых политик.

ВНИМАНИЕ Некорректное изменение содержи мого реестра способно нанести серьезный урон ва шей системе. Прежде чем редактировать сделайте резервные копии всех важных данных, которые хранятся на компьютере.

Чтобы задать для счетчики и пороги выполните следующие действия.

Откройте системный монитор.

2. Дважды щелкните Performance Logs and Alerts (Оповещения и журналы а затем щелкните Alerts (Опо 3. Дважды щелкните строку оповещения в панели.

4. В поле Comment (Комментарий) введите описание 5. Щелкните Add (Добавить).

Для каждого счетчика или группы счетчиков, которые нужно до бавить в журнал, выполните следующие действия.

1. Для мониторинга счетчиков компьютера, на котором будет исполняться сервис Performance togs and Alerts и журналы щелкните Use Local Computer Counters (Использовать локальные счетчики).

В противном случае для мониторинга счетчиков на заданном компьютере независимо от того, где будет исполняться вис, щелкните Select Counters From Computer (Выбрать чики с компьютера) и укажите имя компьютера.

2. Выберите подлежащий мониторингу объект производительности.

Мониторинг производительности приложения 3. Выберите один или несколько связанных с объектом счетчиков.

4. Для всех экземпляров выбранных счетчиков щелкните All Instances (Все журналы содержать информацию об экземплярах, которые не были доступны сначала, но появились впоследствии).

В противном случае для наблюдения за конкретными экземп лярами выбранных счетчиков щелкните Select Instances From List (Выбрать вхождения из списка) и затем выберите нужный экземпляр или экземпляры.

5. Щелкните Add (Добавить).

6. В Alert When The Value (Оповещать когда значение) выбе рите Under (Меньше) или Over (Больше), а в поле Limit (По рог) укажите пороговое значение срабатывания.

7. В поле Sample Data Every (Снимать каждые) укажите величину и единицу измерения интервала данных.

3. Завершите настройку оповещения с вкладок Action (Действие) и Schedule (Расписание).

ПРИМЕЧАНИЕ При создании консоли мониторин га для экспорта обязательно выбирайте Use Local Computer Counters (Использовать локальные счетчи ки). В противном случае данные будут собираться с компьютера с указанным именем независимо от того, где установлен файл консоли.

Чтобы настроить оповещения, выполните следующие действия.

системный монитор.

2. Дважды щелкните Performance Logs and Alerts (Оповещения и журналы производительности), а затем щелкните Alerts (Опо вещения).

3. Дважды щелкните строку оповещения в панели.

4. Щелкните вкладку Action 5. Для генерации записи, просматриваемой с помощью Event Viewer (Просмотр выберите Log An Entry in the Application Event Log (Сделать запись в журнале событий при ложения).

Глава 6. Для отправки сообщения сервиса Messenger выберите Send a Network Message to сетевое сооб щение) и введите название компьютера, на котором будет отображено сообщение.

7. Для запуска журнала регистрации счетчика при оповещении выберите Start Performance Data Log (Запустить журнал про и укажите нужный журнал.

8. Для запуска программы при срабатывании сигнала тревоги выберите Run This Program (Запустить программу) и введите путь и имя файла либо щелкните Browse (Обзор) для поиска При срабатывании сигнала сервис создаст процесс запустит указанный файл. Вы также можете задать параметры командной строки программы. Для этого щелкни те Command Line Arguments (Аргументы командной и выберите соответствующие флажки параметров командной строки.

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

Откройте системный монитор.

2. Дважды щелкните Performance Logs and Alerts (Оповещения и журналы затем щелкните Counter Logs (Журналы счетчиков), Trace Logs (Журналы трассировки) или Alerts (Оповещения).

3. На правой панели щелкните правой кнопкой название нужного журнала или затем щелкните Start (Пуск) для запуска генерации журнала или мониторинга сигнала тревоги либо Stop (Стоп) для остановки.

ПРИМЕЧАНИЕ Прежде чем журнал или сигнал стартует или остановится, возможна небольшая задержка, которая заметна по изменению цвета значка (с зеленого на красный при остановке наоборот).

Для удаления счетчиков из описания журнала или сигнала тре воги выполните следующие действия.

Мониторинг производительности приложения Откройте монитор.

2. Дважды щелкните Performance Logs and Alerts и журналы производительности), затем щелкните Counter Logs (Журналы Trace Logs (Журналы трассировки) или Alerts (Оповещения).

3. Дважды щелкните на правой панели название оповещения или журнала.

4. В списке Counters (Счетчики) выберите счетчик, который хо тите удалить, затем щелкните Remove Для просмотра или изменения параметров журнала или опове щения выполните следующие системный монитор.

2. Дважды щелкните Performance Logs and Alerts (Оповещения и журналы производительности).

3. Щелкните Counter Logs (Журналы счетчиков), Trace Logs (Жур налы или Alerts (Оповещения) 4. Дважды щелкните на правой панели название оповещения или журнала.

5. Просмотрите или измените параметры журнала или оповещения.

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

Откройте системный монитор.

2. Дважды щелкните Performance Logs and Alerts (Оповещения и журналы затем щелкните Counter Logs (Журналы счетчиков), Trace Logs (Журналы трассировки) или Alerts (Оповещения).

3. Дважды щелкните на панели название оповещения или журнала.

4. Щелкните вкладку Schedule (Расписание).

5. В разделе Start log (Запуск наблюдения) выберите одну из сле дующих опций;

Х для активизации журнала или сигнала щелкните Manually (Вручную). Если выбрана данная опция, то для старта журнала или активизации сигнала щелкните назва 106 Глава журнала на панели и затем Start (Пуск);

Х для активизации журнала или сигнала в указанное щелкните At (Время) и укажите время и дату.

6. В разделе Stop Log наблюдения) выберите одну из сле дующих Х для остановки журнала или сигнала вручную щелкните Manually (Вручную). Если выбрана данная опция, то для остановки журнала или щелкните название журнала на правой панели и затем выберите Stop (Стоп);

Х для остановки журнала или оповещения по истечении за данного интервала щелкните After (Через) и ука жите число единиц времени, а также тип этих единиц (дни, часы и т.д.);

Х для остановки журнала или оповещения в указанное вре мя щелкните At (Время) и укажите время и дату (год зада ется четырьмя цифрами, остальные параметры Ч Х для прекращения генерации журнала, когда файл журна ла заполнится:

о для журнала счетчика щелкните When the Log File is Full [Когда журнала заполнен). Данные будут записы ваться в файл до достижения им размеров, указанных вами на вкладке Log (до 2 Гбайт);

о для журнала трассировки щелкните When the n-MB Log File is (Когда файл журнала заполнен). Данные бу дут записываться в до им размеров, указанных вами на вкладке Log Files (в Мбайт).

7. другие необходимые параметры журналов и опове (при этом учитывайте доступный дискового про странства и размеры дисковых квот;

если в результате гене рации журнала пространство на диске будет исчерпано, то произойдет ошибка):

Х для журналов выберите в разделе When a Log File Closes файл журнала будет закрыт) нужный сценарий зак рытия журнала:

Мониторинг производительности приложения о для создания циклического (постоянного, автоматичес кого) журнала счетчиков или трассировки выберите Start a New Log File (Начать новый файл журнала);

о для запуска программы по завершении журнала (напри мер, команды копирования завершенных журналов на компьютер) выберите Run This Command (Вы полнить команду). путь и имя нужной програм мы или Browse (Обзор) ее поиска;

Х для з разделе When An Alert Scan Finishes (Ког да наблюдение за оповещением будет закончено) выбери те Start a New Alert Scan (Начать новое наблюдение), если требуется постоянный мониторинг оповещения.

Чтобы удалить журнал или оповещение тревоги, выполните сле дующие действия.

Откройте системный монитор.

2. щелкните Performance Logs and Alerts (Оповещения и журналы производительности).

3. Щелкните Counter Logs (Журналы счетчиков), Trace Logs (Жур налы трассировки) или Alerts (Оповещения).

4. На правой панели щелкните правой кнопкой название журнала или оповещения и выберите Delete.

Опция открытия нового журнала недоступна, если вы выбрали режим закрытия журнала в определенный момент (дата и время) или закрываете его вручную.

Заключение В этой главе мы рассмотрели приемы использования системно го монитора тестирования производительности и лузких мест на системном уровне. Вы узнали о некоторых тах и счетчиках, мониторинг которых позволяет отыскать лузкие места. Умение работать с системным монитором совершенно необходимо для успешного тестирования и анализа характерис тик производительности.

Глава Способы анализа производительности работы Web-приложений в сети не от системы (Microsoft NT, Windows 2000 и Windows XP), технологий разработки (стати ческий HTML, Windows а теперь и и доступа к данным (RDO, ADO или Причина такого постоянства кроется в том, что основной протокол, используемый для Интер нет-коммуникаций, остается все тем же С и понятия о программе, как о сервисе, эти способы можно применять для выявления связанных с сетью лузких мест и по вышения сетевой производительности как старых так и разработанных на основе Framework.

Проведение анализа сетевой производительности приложения Многие пользователи no-прежнему подключаются к Интернету посредством обеспечивающих крайне малые ти передачи данных, и в обозримом будущем ситуация вряд ли изменится. Задача производительности Ч выявить медленно работающие страницы код внести чтобы пользователю было комфортнее рабо тать с приложением. Мы полагаем, что вы с основами вычислительных сетей, например с моделью (Open Systems Interconnection), но вряд ли вы столь же хорошо знаете основы производительности работы в сети анализа производительности. Поэтому прежде чем углу биться в описание процесса анализа сетевой производительнос ти, мы познакомим вас с необходимыми терминологией и кон цепциями. Если встретите в главе незнакомые термины, рекомендуем книгу Mitch Tullock Microsoft Encyclopedia of Networking, Second (Microsoft Press, Вам также сле дует ознакомиться с вопросами, которые чаще всего задают ав торы тестируемых приложений. Среди них могут на пример, такие: Какое влияние на моих удаленных окажут сетевые задержки (network Что такое сетевой обмен (round trip) и как это на удобство работы моих Как мне объем передаваемых дан ных для каждого страничного просмотра (page view) и другого со держимого (content), загружаемого пользователями при работе с моим Мои пользователи жалуются на большое время отклика. Что мне Как мне выявить и устранить задержки обработки (processing на моем вере или SQL-сервере? В главе мы ответим на подобные вопросы, а также дадим определения приведенных выше терминов и представим ры, демонстрирующие сущность этих и их влияние на производительность приложения. Мы также расскажем немно го об инструментах анализа производительности: Micro Network Monitor и Compuware Application Expert.

ПРИМЕЧАНИЕ Мы используем термин просмотр страницы для обозначения самой страницы вместе со связанными с ней с элементами или файлами.

Например, когда мы говорим об то подразумеваем сам этот файл и сопутствующие ему изображений, стилей sheet), сце нариев и т. д.

Сетевые Проще всего определить сетевую задержку как время, требуе мое пакету данных для перемещения по сетевому соединению.

Чем меньше задержка элементами вашего Web-приложе ния, тем меньше время отклика. Задержки и полоса пропускания 110 Глава (bandwidth) Ч это два фактора, в основном влияющие на ско рость сетевого соединения. Чтобы узнать сетевую задержку меж ду клиентом и воспользуйтесь pathping или другими утилитами, подобными средству Trace Route, Application Expert. Презентация Application Expert в формате Microsoft Power Point находит на прилагаемом к книге компакт-диске.

ПРИМЕЧАНИЕ Программа pathping Ч это утили та командной возможности утилит ping и tracert. Чтобы воспользоваться откройте окно командной строки и pathping На экране отобразятся узлы сети меж ду вами и сервером, а также задержка или время се тевого обмена для каждого узла.

Любое соединение по локальной или глобальной сети ограниче но сетевыми задержками. К факторам, задерж плохое качество сетевых большие рас стояния, приводящие к увеличению промежуточных узлов и на пути пакетов, а также перегрузки сети. Например, задержка типичного локального соединения, установленного по средством может составить секунд, тогда как при увеличении расстояния, когда данным при дется преодолеть множество сетевых устройств, задержка вы растет до 500 миллисекунд. В табл. 5-1 показано задержек, измеренных с помощью Network Monitor, при запросе домашней страницы IBuySpy из браузе ра Microsoft Internet Explorer. Результаты были импор тированы в Response Time Predictor приложения Application что позволило нам экстраполировать времена отклика на случаи и 500-миллисекундной задержки для ного со скоростью 56 кбит/с. Подробнее это и дру гие средства Application Expert мы рассмотрим далее в разделе Работа с Expert фирмы В данном случае дополнительная 300-миллисекундная задержка увеличивает время отклика не на 300-миллисекунд, а на 2,5 се кунды. Это с тем, что задержка оказывает влияние на каждый сетевой обмен.

Анализ работы в сети 5-1. Задержка и время отклика Скорость соединения Время отклика, '.

Мбит/с 56 кбит/с 56 кбит/с 500 8, ПРИМЕЧАНИЕ Один из способов борьбы с задер жками Ч Web-приложения в географи ческой близости от его пользователей. Это не гаран тирует лучшее соединение между и но обычно сокращает задержки.

Сетевые обмены Сетевой обмен Ч это генерируемая приложением пара зап рос Ч ответ между клиентом и сервером. Запрос, посылаемый Web-браузером Web-серверу, и отправляемый обратно ответ, составляют один обмен. Когда вы вводите в браузере URL, например каждая картинка, таб лица стилей или другой элемент страницы, отправляемый в от зет на ваш запрос, составляют отдельный обмен. Допол нительные обмены происходят при установлении каждого соеди нения с Web-сервером. Далее в этой главе мы обсудим, как, при менив Application Expert, можно быстро получить число сетевых обменов, требуемых вашими ASP-страницами. В сочетании с за держками количество сетевых обменов огромное вли яние на время отклика приложения. Представьте себе, что ваши расположены на западном и на восточном побере жьях США. Вы находитесь в Калифорнии, и для загрузки ASPX входа в приложение IBuySpy с сервера на западном по бережье требуется 4 секунды, тогда как на загрузку ее с сервера восточного побережья Ч 6,5 секунд. исследования показывают, что задержка в соединении с сервером восточного побережья 500 миллисекунд, а западного Ч 200 мил лисекунд. Так как сетевая задержка вносит свой вклад в каждый сетевой обмен, то отклик с восточного побережья идет пример но на 2 секунды дольше.

Глава Разработчики большинства приложении не могут влиять на се задержки в Интернете. Поэтому минимизация числа сете обменов в приложении крайне важна для обеспечения ма лых времен отклика даже при больших сетевых задержках, числа сетевых обменов Самым эффективным методом уменьшения числа сетевых обме нов считается сокращение числа на странице. В табл. 5- приведены данные для домашних страниц двух крупнейших по которыми вам, приходи лось В первом случае на домашней странице все го шесть и она загружается очень быстро. На второй странице размещено около объектов, и ее загрузка занимает гораздо больше времени. Обратите внимание на разное число обменов, необходимых для загрузки этих страниц.

5-2. Влияние количества объектов на странице на число сетевых обменов Число Число Сайты обменов Поисковый 1 (оптимизированный) 6 Поисковый сайт 2 (медленный) На первом удалось снизить число до шести, что обеспечило менее чем время отклика для большин ства на скорости 56 кбит/с. Для уменьшения числа объектов на домашней странице этого размещена одна большая картинка, состоящая из изображений. Так как один сетевой обмен требуется загрузки каждого объекта, то, объединив восемь небольших изображений в один запрос, уда лось избежать семи обменов.

Передаваемые данные Передаваемые данные Ч это объем информации, перемещен ной между Web-браузером клиента и Web-сервером, обычно из меряемый в Наилучший способ измерения переда ваемых данных Ч разбиение сценариев работы пользователя с приложением на просмотры страниц вместе со связанны ми с ними элементами. Например, при первом обращении к до Анализ производительности работы в сети странице передается 46 килобайт некэширован и 24 данных (при последующих запросах многие будут из кэша вашего бра узера, расположенного во каталоге браузера на ва шем компьютере). Наш опыт что допустимое отклика достигается, когда объем данных, передаваемых при просмотре страницы и связанных с не превыша ет 50 Это дает максимальные шансы получить корот кое время отклика для низкоскоростных типа модемов. Говоря об объеме в этой главе мы используем пару терминов Ч килобиты в секунду и ки лобайты данных. лучшей иллюстрации связи между этими метриками в табл. 5-3 показаны соотношения меж ду битами и байтами, килобитами и килобайтами и и 5-3. Преобразование мер Измеренное значение Преобразованное 8 бит 1 байт 1 байта килобайта 1 мегабайт объема передаваемых данных Разработано несколько методов снижения объемов данных, пе редаваемых между Explorer и IIS, например сжатие сред ствами IIS, удаление лишних символов и пустых промежутков, уменьшение числа объектов на странице и оптимизация картинок.

Сжатие HTTP Ч это встроенное средство и Internet Explorer.

Оно хорошо работает в случае статического тако го, как HTML-файлы, и несжа тые картинки. Однако с динамическим содержимым может воз никнуть проблем, в том числе неправильное отображение страницы или ее функциональных возможностей. Сжатие также связано с дополнительными расходами ресурсов сервера IIS. По умолчанию сжатие HTTP отключено, его можно активизи ровать на вкладке Services WWW Service Master Properties, пока занной на рис.

Глава Рис. 5-1. Активизация средств сжатия данных IIS сжатие не забудьте задать типы подлежащих сжатию, путем редактирования Далее как следует изменить содержимое метабазы для сжа тия статических файлов TXT, )5, DOC и XLS files;

сжатие как показано на рис.

2. окно командной строки и перейдите в папку admin 3. выполните команду: cscript.exe set "doc" 4. выполните команду: cscript.exe set "txt" "js" "doc" "xls";

5. выполните команду: iisreset.exe /restart.

метод уменьшения объема передаваемых данных подра удаление избыточных символов и пустых промежутков, Особенно значительный эффект достигается в циклах, при пе редаче клиенту больших объемов данных. Кроме того, многие разработчики помещают в свой код комментарии, что добавля ет на страницу дополнительные символы и строки и увеличива ет объем передаваемых данных.

Сокращение числа объектов на странице уменьшает объем пе редаваемых данных. Многие сайты используют картинки для Анализ производительности работы в сети списков и форматированного текста.

Ограничив число элементов и цветной текст и цвета фона для выделения на вы уменьшите мы передаваемых данных и количество сетевых обменов.

ПРИМЕЧАНИЕ Если вы хотите максимально со кратить размеры своих используйте корот кие имена переменных и файлов, а также плоскую структуру каталогов. Это немного уменьшит объем передаваемых так как клиенту будет отсы латься меньше текста.

Картинки делают Web-сайт более привлекательным внешне, но их применение связано со значительными расходами. Если можно, только с картинками в формате (Graphics Interchange Format). Использование оптимизированных или сжа тых картинок снизит объем передаваемых данных, причем чаще всего при сохранении качества изображения. Большинство вы сококлассных программ создания изображений содержат сред ства оптимизации и сжатия файлов картинок. Используйте одни и те же для хранения изображений логотипа вашей ком пании, панелей навигации и других картинок, по всему приложению. Обязательно указывайте одни и те же вые имена, иначе Internet Explorer будет считать эти картинки разными. После первого выполнения запроса Internet Explorer картинки на локальном компьютере. Другой вариант загрузка картинок с использованием При этом картинки загружаются в фоновом режиме одновременно с остальными элементами страницы. Последующие запросы к картинкам будут выполняться быстрее с точки зрения конечно го пользователя, так как Internet Explorer сохраняет картинки ло кально.

ПРИМЕЧАНИЕ задавайте высоту и ширину каждой картинки. Картинка при этом загру жается так как Internet Explorer не прихо дится рассчитывать ее размеры.

Глава обработки возникают, когда запрос клиента проводит слишком много времени на промежуточном уров не приложения. может быть плохо написанный исполнение которого занимает несколько секунд, или недостаточ ная настройка SQL-запросов и индексация, вызы вающие длительное исполнение хранимых процедур и других SQL-команд. Задержки обработки на отклика. Мы обычно считаем нормой задержки более 1 секунды. Однако стандарты вашего приложения могут быть как более, так и менее строгими в зависимости от параметров Ч типа и размеров пользовательской аудитории. Например, если приложение генерирует большие отчеты для группы анали состоящей всего из нескольких человек, то допустимо большое время отклика. Это объясняется тем, что длинные от четы могут зачастую дольше сервером базы данных, а для небольшой аудитории наверня ка существуют бюджетные ограничения, в результате чего не удастся максимально оптимизировать приложение. Однако, если пользовательская аудитория и состоит из заказывающих ваши товары, вам следует максимально оптими зировать время отклика. Иначе возможно падение продаж по причине недовольства медленной работы приложения.

Сокращение задержек обработки Наиболее распространенный способ сокращения времени откли ка приложения Ч уменьшение задержек обработки. Для этого требуется ускорить медленно работающие управ ляемый код или SQL-запросы. Подробнее об этом рассказано в разделах данной книги, посвященных управляемому коду и SQL. Далее в разделе Выявление задержек обработки в прило мы рассмотрим, как с помощью Network Monitor или Expert определить, имеются ли задержки обработки на страницах и на каком уровне приложения они Необходимо определить место кода приложения, в котором про исходит задержка. Для этого разработано несколько методов:

Анализ производительности работы в сети в приложениях вы можете включить трассировку для обращении к ASPX-странице из бра узера статистика и временная информация отобразится вни зу страницы. Для трассировки на страни добавьте директиву как показано на рис. 5-2;

Рис. 5-2. Включение трассировки ASPX-страниц Х в коде стандартных ASP-приложений для выявления проблем можно использовать таймеры. Просто вставьте переменные по тексту ASP-сценария и выведите их значения з текстовый файл. Данный метод профилирования позволя ет идентифицировать место задержки с точностью до функ ции или строки кода. На прилагаемом компакт-диске содер жатся примеры измерения временных параметров для VBScript и JScript Ч и ACETimerJS.doc. Очень часто такие задержки связаны с вызовом неэффективно написан ного специализированного компонента или с SQL-командной, на исполнение требуется несколько сотен миллисе кунд или даже несколько секунд;

118 Глава ПРИМЕЧАНИЕ Простейший прием профилирова ния: вставьте перед тем местом ASP где вы подозреваете наличие задержки.

При загрузке такой страницы исполнение завершится при исполнении этой команды.

Если при этом задержка обработки не переместите response.end дальше по коду ASP и за грузите страницу снова. В конце концов, вы таким образом определите место вызывающе го задержку.

Х самым легким способом лузких мест и задержки обработки в SQL использование SQL Profiler. До статочно просто трассировочный файл SQL Profiler во время обращения к странице. Задержки, вызван ные исполнением команд SQL или сохраненных процедур, будут отображены в поле Duration Определив таким образом медленно работающие команды или процедуры, вы сможете заняться их оптимизацией. Под робно оптимизация SQL-команд и сохраненных процедур об суждается в главе 8.

Время отклика При анализе производительности приложения время отклика считают с момента выдачи запроса клиентом до поступ ления ответа на него. Повышение производительности приложе ния Ч это то же самое, что сокращение общего времени откли ка при просмотре страницы приложения, все связанные с элементы. К увеличивающим время отклика, относятся большое число сетевых обменов, низкая по лоса пропускания, высокие задержки на линиях подключения конечных пользователей, большие передаваемых данных, а также задержки обработки в коде IIS, управляемом коде или в SQL-запросах. В конце главы мы расскажем, как быстро рассчи тать время отклика с помощью Application Expert.

Допустимое время отклика от различных факторов, в том числе от типа приложения, назначения каждой страницы прило жения, полосы пропускания и задержек сетевого соединения.

Анализ работы в сети сетевых требуемых расчета отклика при страничных просмотрах или иных действиях пользователей, в ре зультате которых запросы к Web-серверу.

Предусмотрено две версии Network Monitor для Windows 2000:

Х Network Monitor 2 Lite в состав Windows Advanced Server u Data Center. Эта версия способна анализи ровать только сетевой трафик между локальной сетевой пла той и взаимодействующими с ней, узлами;

Х Network Monitor 2 Full входит в состав Microsoft System Management Server (SMS) 2. Эта версия выполнить анализ всего трафика сети из одного где установлен драйвер Network Monitor.

Network Monitor перехватывает сетевые кадры, помогая обнару живать и анализировать причины сетевых проблем. Он позволя ет выявлять проблемы сетевых записывая данные, пересылаемые между компонентами сетевые обме ны, время доступа к сети и задержки обработки.

и IP-адреса Перед началом анализа работы сети вам нужно записать МАС адреса и IP-адреса всех узлов. Для этого на каждом сервере и клиенте откройте окно командной строки и введите Результаты выполнения данной команды содержат информацию об IP-адресе, DNS-серверах, суффиксе физическом или МАС-адресе и др. Эти сведения позволят вам настроить фильтр анализатора и выделить трафик приложения, Часто за пись в hosts позволяет вам повлиять на узлы сети и заста вить их с определенными, выбранными вами сетевыми адаптерами и Обычно файл hosts, не име ющий расширения, в папке C:\windows\system32\dri vers\etc. Для добавления или изменения его с помощью Microsoft Notepad и приведенным в файле примерам.

ПРИМЕЧАНИЕ Если в клиентском компьютере или на сервере установлено несколько сетевых адапте ров, отключите лишние адаптеры;

это гарантирует, что весь трафик проходит через один и тот же адаптер.

Глава Настройка Network Monitor Прежде чем приступить к сбору информации о работе пользо вательских сценариев, Network Monitor необходимо настроить.

три основных параметра, настройка которых гарантирует, что собранные данные будут корректными и полными:

фильтр анализатора (capture filter), буфер данных (capture buffer) и Фильтры анализатора позволяют ограничить объем перехваты данных только теми узлами, которые используются ва шим приложением. Вы легко выделите пересылаемые данные и сетевые обмены, избежав анализа лишнего сетевого трафика в файле трассировки. Типичный фильтр показан на рис. 5-3.

Filter [Address IIP] Server Рис 5-3, Фильтр Network Monitor Важным параметром считается и буфер По умолчанию его размер равен 1 мегабайту. Если страница пересылает боль шие объемы данных, то вы можете задать другое ограничение.

Обычно для сбора больших данных мы устанавливаем размер буфера в 10 На рис. 5-4 показано диалоговое окно Capture Buffer Settings программы Network Monitor.

Анализ работы в сети Рис. 5-4. Диалоговое окно Capture Buffer программы Network Monitor Важно убедиться в том, что вы собираете данные с нужной сети.

Если в компьютере несколько сетевых адаптеров, то следует указать сеть, подлежащую анализу. Чтобы убедиться в том, что сбор данных выполняется из сети, запустите трассировку Network Monitor и выполните команду ping для IP адреса или тестируемого Затем останови те трассировку Network Monitor и убедитесь в том, что трафик команды ping перехвачен. Если это не так, переключите Network Monitor на другую и повторите описанные выше действия до тех пор, пока данные не станут собираться с нужной сети. На рис. 5-5 показано диалоговое окно сети Network Monitor.

Рис. 5-5. Диалоговое окно Select A Network программы Network Monitor Настройка окружения Аппаратные средства, используемые при анализе сетевой произ водительности, включают тестового клиента и все серверы при ложения SQL Server, сервер приложений), а также все используемые сетевые (переключатели, концентрато ры, маршрутизаторы, мосты, распределители нагрузки и т. д).

Приложения с высокими требованиями к готовности (availability) и масштабируемости обычно обращаются к нескольким 124 Глава Web-серверам для равномерного сетево го трафика. При анализе подобных приложений вам следует убе диться в том, что в момент проведения анализа функционирует один из Web-серверов приложения. Это нужно для чтобы вы гарантированно собрали трафик соответствующе го Web-сервера. Предусмотрены различные способы сбора се тевого трафика приложения с помощью Network Monitor. Вот некоторые из них:

Х большинство приложений из серверов, связанных сетевым переключателем так как при этом каждый порт имеет выделенную полосу пропускания, ность повышается. Сетевые переключатели изолирую трафик каждого порта, что делает невозможным для Network Monitor перехватывать трафик между уровнями приложения. Однако посредством перекрытия (spanning) или большинство переключателей удается настроить на копирование всего трафика с каждого выбранного вами пор та. Информацией о настройке перекрытия Переключатель SQL-сервер Клиент:

Х Web-браузер Х Рис. 5-6. перекрытия портов Анализ производительности работы в сети вашего сетевого оборудования. Используя версию Network Monitor SMS и подключив клиента Network Monitor к данному порту, вы сможете наблюдать весь трафик от каждого уровня приложения (рис.

если вы не можете конфигурацию переключателя или если он не поддерживает перекрытие воспользуй тесь другим простым способом: подключите все серверы шего приложения к одному концентратору (hub). В концент раторах полоса пропускания используется всеми портами со вместно;

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

Клиент:

Х Х Рис. 5-7, Использование сетевого концентратора Х полная версия Network Monitor позволяет установить Remote Network Monitor на каждом уровне вашего приложе ния для удаленного сбора трафика. Если вы выберете данный способ, установите драйвер Remote Network Monitor на дом уровне своего В меню Start (Пуск) те Control Panel (Панель управления), затем выберите Add/ Remove Programs и удаление программ). В диало говом окне Add/Remove Programs и удаление грамм) щелкните Windows Components (Добавление и удале ние компонентов выберите Management and Monitor Глава и затем Ч Network Monitor Tools (Средства сетевого монитора) и щелкните ОК.

Данный метод позволяет собрать на одном клиенте информа цию, всеми агентами. Преимуще ство этого способа в том, что он быстрее, чем сбор данных на каждом уровне вашего приложения по отдельности. Од нако и недостаток Ч более долгая так как на каждом необходимо установить ком понент. Данная модель сбора данных изображена на рис. 5-8;

Переключатель SQL-сервер:

Х Netmon Клиент:

Х Web-браузер Х Рис. удаленных драйверов Network Monitor Х самым простым методом сбора трафика считается использо вание Network Monitor 2 Lite для сбора информации на уров не IIS. Обычно этот уровень расположен между уровнем кли ента Internet Explorer и уровнем SQL. Следовательно, если ент Network Monitor установлен на вы сможете перехватывать входящий и исходящий трафик (рис.

Анализ производительности работы в сети Переключатель SQL-сервер Клиент:

Х Рис. 5-9. Использование уровня IIS как клиента Network Monitor Сбор сетевого трафика после того как Network Monitor сетевое окружение на строены, сбором трафика. Мы разработали несколько которые помогут вам Х Так как обычно мы разбиваем пользовательские сценарии на отдельные то рекомендуем собирать данные для каждого страничного просмотра по отдельности. Это позво лит легко определить, какие объемы данных пересылаются при просмотре страницы и связанных с нею элементов, При поиске сценариев, требующих больших объемов переда ваемых данных и большого числа сетевых обменов, вы може те просуммировать результаты для отдельных страничных просмотров.

Х Чтобы убедиться в достоверности полученных данных, выпол ните процедуру их сбора несколько раз. В 90% случаев, дан ные сетевого анализа оказывались корректными, однако, пока вы не выполните несколько повторных сборов данных для Глава в этом нельзя быть уверенным. Чтобы убедиться в повторяемости результатов, мы выполняем каждую процеду ру сбора данных раза. Результаты повторных тес тов должны быть если не идентичными, то похожими с точки зрения числа сетевых обменов и передаваемых данных.

Network Monitor позволяет сохранять собранных дан ных (САР), которые можно использовать для анализа или импорта в другие программы, такие, как Appli cation Expert.

Сохраните фильтры анализатора и данных адресов (об выше) на случай проведения повторных тестов.

Это позволит вам в будущем сэкономить время на настройку Network Monitor. На рис. 5-10 и 5-11 показаны диалоговые окна Save Capture Filter и Save As.

Filter Save Рис. Диалоговое окно Save Capture Filter программы Network Monitor Х Задачей сетевого анализа сбор информации, отно только к передаваемым между узлами данным иссле дуемого этого запустите сбор данных в Network Monitor, запросите страницу, введя URL в строке ад реса браузера, и завершите сбор данных сразу же, как толь ко загрузка страницы завершится. Загрузка страницы счита ется Internet Explorer отображает Done в нижнем левом углу панели Этот прием позволит вам отсечь лишний трафик, передаваемый после того, как страница уже загружена.

Mora S Рис. 5-11. Диалоговое окно Save Addresses As программы Network Monitor собранных Network Monitor данных Файл собранных Network Monitor данных состоит из двух пред окна перехвата (capture) и окна отображения данных.

Как показано на рис. 5-12, окно перехвата отображает объем данных, передаваемых между узлами.

Х ' гаде Х - - - Рис. 5-12. Окно перехвата Network Monitor Окно отображения данных содержит девять столбцов и, как вило, много строк Ч в зависимости от собранных дан ных. По умолчанию в трассировочном файле отображается МАС адрес платы. Чтобы облегчить восприятие 130 Глава ного файла, измените адрес на имя или тип компьютера. На рис. показаны данные, собранные на пути от клиентского браузера до IIS и далее до SQL-сервера и обратно.

да**"..

CISCO ТС?...

..

6 - TCP.S....

S - LOCAL...

14 LOCAL ТС?..

:

LOCAL TCP.

j Рис. 5-13. Окно отображения данных Network Monitor Все отображаемые здесь данные важны, однако счи таются объем передаваемых данных, обме нов и общее время.

Работа с Application Expert фирмы Compuware Application Expert предоставляет расширенные возможности предсказания времени отклика приложения и подробную инфор мацию на уровне приложения для настройки распределенных с целью достижения оптимальной дительности. Application Expert используется как анализатор па кетов или для импорта файлов, сгенерированных Network Moni tor, а также как полнофункциональный анализатор пакетов. При анализе производительности особенно полезны следую возможности Expert: карта диалога, диаграмма пакетов, анализ последовательностей, средство предсказания времени отклика. О них рассказано в следующих разделах.

Анализ работы в сети Карта диалога После импорта данных сетевого перехвата в Application Expert вы взаимодействие прило жения. На рис. 5-14 показан карта диалога (conversation map) начальной страницы (без кэширования). По ней можно быстро определить объем передаваемых данных и число сетевых обменов при отображении страницы и всех связанных с нею эле ментов.

Рис. 5-14. Карта диалога Application Expert На карте представлены узлы IIS SQL) и происходящие при обращении к странице. Диалогом здесь называется передача данных различными узлами приложения. Вы можете рассматривать диалоги побайтно или выбирать из контекстного меню удобную вам метрику, например байты полезной информации, кадры или сетевые обмены. Обра тившись снова к рис. 5-6, мы видим, что между клиентом и сервером IIS всего передано 46 кбайт данных, для чего потребо валось сетевых обменов.

Глава пакетов (bounce) представляют собой отличное отображающее взаимодействие между уровнями при ложения на пакетном Оно позволяет выявлять задерж ки обработки. На рис. показан диаграмма пакетов для ницы приложения IBuySpy.

Рис. 5-15. Диаграмма пакетов Application Expert Диаграмма пакетов отображает временные характеристики об мена пакетами в клиент-серверных Здесь показаны отдельные сетевые кадры з последователь как они передавались между узлами во сбора дан ных. На рис. 5-15 видно, что стартовая страница IBuySpy имеет очень малую задержку обработки Ч примерно миллисекунд.

На диаграмме пакетов каждая линия представля ет узел, а горизонтальные Ч временные интервалы.

считывается от начала трассировки, которое принято за 0. Внут ри диаграммы горизонтальные линии отображают пере хваченные кадры. Размер каждого кадра обозначен цветом, описан ным в легенде внизу окна: красный Ч менее 100 байт, желтый до байт, зеленый Ч до и голубой Ч более байт.

Анализ производительности работы в сети последовательностей определения запросов, вызывающих задержки обработки, наряду с диаграммой пакетов полезно воспользоваться средства ми (thread). пред ставление позволяет рассматривать последовательности по отдельности. Панели связаны так что когда вы полняете действия в верхней панели, содержимое изме в различные Напри мер, если щелкнуть последовательность в верхней панели, то в появятся кадры, При необходимости Application Expert изменяет масштаб диаграммы пакетов. Если вы щелкнете кадр, отобража емый на диаграмме пакетов, то получите подробную цию о последовательности. На рис. пока зан анализ последовательностей для страницы Default.aspx при ложения IBuySpy. С помощью средств анализа последовательно стей Application Expert удается легко выделить все для просмотра этой страницы. Добыть эту информа цию напрямую из файлов Network Monitor или из представления трассировки пакетов Application Expert гораздо труднее.

Рис. Анализ в Application Expert 134 Глава Для более подробной информации воспользуйтесь трассировкой пакетов для кадра с помощью опции Drill Into Packet Trace контекстного меню или дважды щелкнув кадр на диаграмме пакетов. Данное представление аналогично отображению необработанных результатов перехвата в Network Monitor. На диаграмме трассировки пакетов отображаются все пакеты и важная информация о каждом из в том числе мер номер подтверждения, размер окна и общее количе ство переданных данных) в сравнении с байтами полезной нагрузки (общее количество минус заголовки и кадры подтверждения). Диаграммы пакетов, последовательностей и карта диалога представляют собой обработанные представления исходных данных, отображаемых на диаграмме трассировки па кетов. Диаграмма трассировки пакетов для страницы приложения IBuySpy показана на рис. 5-1 7, Рис. 5-17. Диаграмма трассировки пакетов Application Expert Средство предсказания времени отклика Средство предсказания времени отклика (Response Time Predictor) позволяет предсказать влияние пропускной способности и задер Анализ производительности работы в сети жек на общее время отклика. Это очень полезно определе ния времен отклика ваших Web-страниц в среде до начала рабочей эксплуатации приложения. Такие данные помога ют выявить и устранить проблемы производительности до реаль ной эксплуатации приложения. оптимизиро те его которые не вашим ограни чениям на время отклика. Предсказанное время отклика зависит от множества факторов, включал число сетевых передаваемых данных и задержки обработки, которые модели руются с помощью разработанных Для предсказания времени отклика необходимо задать параметры по лосы пропускания и задержек, характерные условий эксплу атации приложения. Полоса пропускания и задержки следует определять для самой линии связи. На рис. 5-18 по казана модель Response Time Predictor для страницы Spy.

1 СС Г. i 53 2 ОС 2 fin 3 3 4 4 5 7 Рис. 5-18. Средство предсказания времени отклика в Application Expert 136 Глава Анализ сетевых данных с помощью Application Expert В предыдущих разделах этой главы мы перечислили и определи ли ключевые компоненты, используемые в процессе анализа се тевой производительности приложения. Поэтому зам уже изве стно, что Network Monitor приложение, используемое для пе рехвата сетевого трафика между уровнями приложения. Теперь мы расскажем о нашем методе анализа сетевой производитель ности приложения и выявления ее лузких мест.

Формат файла перехваченных сетевых пакетов позволяет про сматривать его в Network Monitor или в Application Expert. Содержимое этого файла сложно интерпретировать, осо бенно начинающим пользователям. Применение для анализа пе рехваченных пакетов Application Expert позволяет значительно сэкономить время. Для импорта файлов перехваченных пакетов Network Monitor в Application Expert:

откройте Expert;

2. новое приложение;

3. откройте Windows Explorer и перейдите в папку, где располо жены перехвата;

4. перетащите эти файлы мышью во вновь созданное приложение.

Расчет объема передаваемых данных После сбора данных сетевого трафика мы выделяем трафик уровнями приложения. Расчет передаваемых дан ных в Application Expert с помощью карты диалога.

На рис. видно, что для страницы Checkout.aspx приложения и связанных с нею элементов между клиентом Explorer и уровнем US-сервера передается примерно данных, а между US-сервером и уровнем SQL-сервера Ч 4 кбайт.

Подсчет числа сетевых обменов Подсчет числа сетевых обменов выполняется с помощью карты диалога Application Expert. Из рис. 5-20 видно, что для страницы Checkout.aspx приложения IBuySpy и связанных с нею элементов между клиентом Internet Explorer и уровнем выполня ется обменов, а между и уровнем ра Ч десять.

Анализ производительности в сети ft Рис. 5-19. Application Expert для расчета объемов передаваемых данных Рис. 5-20. Использование Application Expert для подсчета числа сетевых обменов Глава. Выявление задержек обработки в приложении Задержки обработки на уровнях IIS или SQL-сервера влияние на время отклика. Их возникновение объясняется рядом факторов, таких, как медленно исполняющи еся сценарии или компоненты ASPX-страниц, требующие оптими зации сохраненные SQL-процедуры или неправильно индексы SQL-таблиц. Для определения наличия в своем прило жении задержек обработки разработаны различные ты и методы. Один из них SQL выполняющий мони торинг на уровне SQL. В поле time taken в журналах регист рируется длительность обработки на а диаграмма па кетов Expert позволяет выявить слишком большие интервалы между сетевыми кадрами.

i Рис. 5-21. Использование Expert для поиска задержек обработки Для отладки и мы рекомендуем вести журнал IIS в формате W3C Extended Log. При этом регистрируются все допол Анализ работы в сети параметры, такие, как время число отправленных и принятых байт. Подробнее о формате файла W3C Log Ч в главе 6.

Задержки между кадрами длительностью более секунды следу ет отметить и исследовать. подобную задержку и от корректировав код приложения, вы сократите на тот же объем общее время отклика для данной страницы. На рис. 5-21 пока зана задержка обработки длительностью в 1,3 секунды на уров не для страницы кор зины в приложении отклика Средство предсказания времени отклика программы Application Expert позволяет моделировать времена отклика на основании объема передаваемых данных, числа сетевых обменов и жки обработки, полученных в результате перехвата сетевого тра фика. Получаемые модели предсказать время откли ка для разных соединения и сетевых задержек и дают вам возможность определить, будет ли ваше приложение рабо тать ожидаемым образом, еще до его эксплуатации.

Альтернативный способ предсказа ния времени отклика при различных скоростях со единения и задержках состоит в использовании ап паратного моделирующего глобальную Ч WAN-имитатора. Аппаратные WAN-имита торы размещаются между уровнями Web-приложе ния и подавляют сетевой сигнал в соответствии с запрограммированными спецификациями. Напри мер, можно разместить имитатор между тестовым клиентом и уровнем и запрограммиро вать его так, чтобы понизить скорость соединения до 56 кбит/с и ввести сетевую задержку.

Мы обычно используем сочетание медленных модемных соеди нений, высокоскоростных широкополосных (DSL или кабельные модемы) и стандартных офисных соединений 140 Глава или ЛВС. Для каждого типа соединения можно протестировать наименьшую и наибольшую сетевые задержки. в что параметры полосы пропускания и сетевых задержек в этих моделях не устанавливаются жестко раз и навсегда. Эмпиричес ким путем мы установили:

Х модемные соединения имеют задержку в лучшем, и задержку в худшем случае;

Х соединения DSL или посредством кабельных модемов имеют задержку в лучшем слу чае и задержку в худшем случае;

Х линии Т1 мбит\с) имеют 50-миллисекундную задержку лучшем случае и задержку в худшем случае;

Х соединения ЛВС Ч это или соединения в зависимости от архитектуры сети. Обычно лучшем случае задержка равна миллисекундам или менее, а в худшем 50 миллисекундам.

Как показано на рис. средство предсказания времени от клика программы Application Expert позволяет задать скорости соединения и задержки для каждого уровня приложения. Фор мула расчета времени отклика учитывает скорость соединения, объем передаваемых данных, количество сетевых обменов, се тевые задержки и задержки обработки. В табл. 5-5 перечислены типичные времена отклика для начальной страницы приложения IBuySpy (в отсутствие кэширования) в соответствии с мо делью переменных скоростей соединения и сетевых задержек, 5-5. Моделирование времен отклика Скорость Модем 256 кбит/с 1,54 соединения 56 кбит/с DSL T1 ЛВС Задержка, мс 200-500 50-200 50-100 10- Время отклика, с 2- Анализ производительности работы в сети Заключение Анализ сетевой производительности предназначен для выявления лузких мест и, в конечном итоге, Ч улучшения времени отклика для конечного пользователя. Его применение на этапе разработки поможет обнаружить проблемы ности, связанные со временем отклика, задержками обработки и количеством передаваемых данных. Теперь, когда с помощью описанных в этой главе приемов вы определили места, где при ложение необходимо оптимизировать с целью вре мени отклика, следующие три главы мы посвятим как вы делить конкретные области, подлежащие оптимизации, на каж дом из приложения.

Глава Под термином Web-уровень мы подразумеваем обслуживающий HTTP-запросы удаленных браузеров, таких, как Internet Explorer. Разработано множество различных Web-серве ров для разных платформ. Web-сервер, созданный специалиста ми компании Microsoft, называется Internet Information Server no сути он предатавляет собой и приложе для и доступных через Интер нет или G закрытой интрасети. Ч это очень мощный Web-сер вер, как статичное, так и динамическое содер жимое. К первому обычно относятся картинки или простые тек стовые файлы на HTML, которые изменяются редко. Для конечного пользователя динамическое содержимое может вы глядеть статичным, так как запрос, по которому сценарий испол няется на серверной стороне, выполняется сервером, а клиент получает только результаты. Обычно динамическое содержимое дает пользователю больше возможностей, чем статичное. При каждом запросе динамическое содержимое способно настраи ваться произвольно. Обычно оно генерируется некоторым допол нительным компонентом или сценарием, обрабатываемым Web сервером в результате удаленного запроса. В этой главе пойдет о таких типах динамических приложений, как приложения и традиционные ASP-приложения. В качестве примера в этой главе мы использовали Web-приложение нет-магазина написанное на языке Анализ и настройка производительности Web-уровня Вы узнаете о том, как выявлять места приложения на Web-уровне. Мы не будем все лузкие места просто нереально, а расскажем как анализиро вать Web-приложения. Надеемся, что, воспользовавшись нашим опытом и методом профилирования Web-приложений вы научитесь быстро выявлять некоторые распространенные лузкие места вызывающие проблемы масштабиру емости вашего Web-приложения. После того как лузкое место з Web-приложении выявлено, вам будет гораздо проще устранить проблему самим или с помощью специалистов.

Мы предполагаем, что у вас уже есть определенные знания и опыт работы с и Web-приложениями. Подробное описание и Web-сервера выходит за рам ки данной книги, поэтому мы приводим список источников ин формации по этой теме:

Х Документация no Microsoft Internet Information Services 5.0;

Х ASP.NET Ч G. Andrew Microsoft Step by Step (Microsoft Press, 2002);

Jim Buyens Development Step by Step Press, 2002);

(Wrox Press, Х ASP.NET Ч Francesco Balena Programming Microsoft Visual Basic (Microsoft Press, 2002);

Jim Web Database Development Step by Step Edition (Microsoft Press, (Wrox Press, Особенности конфигурации и параметры производительности Прежде чем приступить к тестированию производительности, крайне важно познакомиться с некоторыми особенностями кон фигурации вашего Web-приложения, связанными с производи тельностью. Необходимо знать метод аутентификации и другие глобальные параметры приложения, чтобы быстро понять, как работает Web-приложение, Хотя приложения ASP и ASP.NET очень отличаются друг от дру га, они могут сосуществовать на одном и том же Web-сервере, так как используемые ими расширения имен файлов отобража ются IIS на разные DLL. Одним из различий этих при 6- Глава ложений способ их настройки. Описание конфигурации выполняется с помощью текстовых файлов в формате XML, тогда как настраиваемые параметры традици онных хранятся в метабазе и в реестре. Хране ние информации в значительно упрощает задачу представления данных в читабельном формате и их динамичес кого обновления: вам не придется перезапускать Web-сервер.

Расширения имен файлов для ASP.NET Впервые имея дело с любым Web-приложением ASP.NET, напри мер IBuySpy, вы заметите много новых расширений имен Х ASPX Ч используется для страниц Web-форм, которые очень похожи на традиционные Х ASCX Ч с таким расширением содержат пользователь ские элементы управления для Web-форм и представляют один из методов повторного использования кода в ASP.NET;

Х ASMX Ч предназначено для реализующих Web-cep XML;

Х VB Ч в файлах с таким расширением хранятся модули фоно вого кода behind) на Visual Basic При разработке Web-приложения на Visual Basic с бу дет связан файл на Visual Basic. Это позволяет отделить элемен ты пользовательского от прикладных алгоритмов;

Х Ч аналогично расширению VB за исключением что код в этих файлах написан на новом языке Модули нового кода, написанные на С#, имеют то же имя, что и Web форма, но с расширением CS;

Х Ч файлы с таким расширением используются для переменных и процедур уровня приложения и сессии, вызываемых, когда Web-приложение стартует или получает очередной пользовательский запрос.

Аутентификация в ASP.NET В ASP.NET используются три режима аутенти фикации: Windows-аутентификация, Passport-аутентфикация и Анализ и настройка Web-уровня аутентификация не отвечает за процесс аутен тификации целиком;

он разделен на два уровня: IIS уровень приложения Режим аутентификации задается тегом в файле (подробно Ч далее в этом разделе).

Windows-аутентификация Этот режим, при котором аутентификация входящих запросов исполняется предназначен для компьютеров Microsoft Win В он применяется в интрасетях. В нем предостав лено три разных метода;

базовый, дайджест и Х Базовая аутентификация Этот метод работает с большин ством браузеров. Так как пароли открытым то в случае Интернет-сайтов его применение допу стимо при использовании и не рекомен дуется.

Х Дайджест-аутентификация Этот метод требует контроллера домена Windows 2000 и HTTP 1,1 поддерживается не всеми браузерами). Пароль передается не открытым тек стом, но как значение, что несколько повыша ет защиту. Однако для проверки контроллером домена паро ли должны на нем незашифрованными. Таким об разом, необходимо обеспечить защиту контроллера домена от внешних атак.

Х Интегрированная (NTLM) Этот метод поддерживается только Internet Explorer и считается самым безопасным, так как имена и пароли никогда не пересылаются по сети. Он требует наличия у каж дого пользователя записи на Web-сервере или кон троллере домена, Passport-аутентификация Ч это централизованный сервис, пре доставляемый Microsoft, который позволят вам входить на любой сайт, поддерживающий Passport, используя единое имя пользо вателя и пароль (то есть обеспечивается единая регистрация).

146 Глава формой формой разработчикам собственные схемы аутентификации в Web-приложениях, ко пароли при этом пересылаются открытым текстом, так что не забудьте использовать SSL для их защиты. В этом режиме созда ется страница входа в систему, которая с в Web.config, где можно задать ограничения Для проверки имени пользователя и пароля используется база данных или Windows 2000 Active Directory.

Конфигурационные файлы Для настройки Web-прилжения обращается к набору На самом верхнем уровне, в папке (режим по умол чанию) [Каталог CONFIG\, находится файл В файле задаются па раметры по умолчанию для всех на данном сервере.

При редактировании этого соблюдайте крайнюю так как изме нения в нем влияют на все Web-приложения на данном сервере.

конфигурационный Web.config Ч уникален для конкретного приложения. Если вы создаете Web-приложение с помощью Studio то этот файл создается автоматичес ки. Если вы не используете Visual Studio то причин для бес покойства нет. В отсутствие файла Web.config приложение насле дует значения по умолчанию из файла machine.config. Чтобы про демонстрировать вам возможности настройки с помощью этих файлов, мы кратко рассмотрим некоторые из параметров.

В табл. 6-1 перечислены некоторые теги, применяемые в гурационных файлах. Более подробно об атрибутах всех этих эле рассказано в документации Framework.

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

He забудьте установить в false на этапе развертывании своего Web-приложения Определяет, как обрабатываются Web-запросы и по иски по сайту;

например какой язык используется при обработке запросов компонентами среды исполнения и HTTP, включая атрибуты для числа запро сов, после которого 503, максималь ный размер входных файлов и минимальное потоков для обработки запросов Один из наиболее обширных элементов, содержащий которые определяют режимы компиляции кода, например установка которого вызывает добавление отладочной информации к скомпилиро ванным сборкам. При развертывании Web-приложе ния атрибут debug следует в Позволяет настраивать SessionState, и дру гие параметры, обеспечивающие дополнительные возможности вашего вам настроить Web-при ложение таким образом, чтобы сообщения об ошиб ках выдавались в терминах, понятных пользователю Позволяет выбрать режим аутентификации Позволяет Web-приложению использовать олицетво рение Задает учетные имеющие права на доступ к ресурсам Задает ключи шифрования и дешифрования данных cookie. Однако его нельзя использован на уровне подкаталогов Позволяет выбирать поименованную политику защиты Реализует политику объявленную элементом securityPolicy см. след.

Глава (продолжение) Тег Описание Используется для настройки элемента HttpModule Ч в основном в отношении состояния сессии связывать запросы к разным типам ресур сов с классами Также применяется ограничения no HTTP только к файлам опре деленных типов Определяет режимы исполнения Web-приложения и различные возможности, такие, как автоматический перезапуск и допустимый размер па мяти, позволяющие производительность использовать клиентские реализации сер верных элементов управления указания Позволяет использовать единый для ва приложения приложению получить информацию о бра узере Знакомство с Web-приложением Некоторые из приведенных выше конфигурационных парамет ров оказывают отрицательное влияние на создаваемое Web-при ложение и даже создают проблемы при разработке тестовых сценариев для него. многие могут считать элемент в полезным, так как ему задать страницу сообщения, куда будет пользователь при возникновении ошибки. При тесто вого сценария в ACT вы по умолчанию не получаете визуальной индикации того, что отображается на странице. Если при записи вашего тестового сценария возникает ошибка, то возможно пе ренаправление на нестандартную страницу ошибки, в результа те чего в файл журнала IIS будет помещен код состояния 200 (ус пех). Для страницы же, на произошла ошибка, будет за писан не истинный код ошибки, а 302 Поэто му следует очень внимательно разобраться в работе приложения, в противном случае на решение подобных проблем вам придет тратить много времени.

Анализ и настройка производительности Web-уровня ПРИМЕЧАНИЕ Если вы заметили, что одна стра ница множество раз, обратитесь к файлу и что это не вызвано нестандартной обработкой ошибок в этом Web-при ложении Профилирование Web-приложения В предусмотрено несколько доступных средств, щих выполнять мониторинг и проблемы производитель ности на Web-уровне. К задачам профилирования, о которых в этом разделе, относятся анализ журнала использование нового средства трассировки про смотр данных производительности с помощью мони тора (с которым вы уже познакомились).

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

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

Форматы файлов журнала предоставляет различные модули и форматы журна ла. За исключением модуля ODBC, выводящего результаты в базу данных, все остальные файлы журнала представляют собой тек стовые ASCII-файлы. Форматы NCSA Common Log File Format и Microsoft IIS Log фиксированные, их нельзя настраивать.

Мы всегда используем при тестировании формат W3C Extended Log File Format, так как его можно настроить, выбрав поля, под лежащие мониторингу. Это очень удобно с точки зрения так как в журнале меньше данных, Глава что сэкономить дисковое и улучшить читабельность журналов без потери функциональных возможно Все выше модули, текстовые файлы, можно настроить таким образом, чтобы создавать новый журнал по достижении заданного размера файла или момента времени (ежечасно, ежедневно, еженедельно и Мы не будем подробно описывать все поддерживаемые IIS форма ты журналов, но немного расскажем о формате W3C Extended Log File Format, так как именно его применяем для идентифика ции проблем в Web-приложениях.

По умолчанию время запроса, указываемое в файле формата W3C Extended Log File Format, соответствует времени по чу, тогда как остальные форматы используют местное время.

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

СОВЕТ При создании или от ладке Web-приложения мы рекомендуем зам выб рать все поля. В противном случае Ч только те, что необходимы для профилирования вашего Web-при ложения. Это сэкономит место на диске и облегчит разбор и навигацию по журнала.

Ниже приведен фрагмент одного из наших журналов в формате W3C Extended Log File Format. Следует отметить, что для журнал мы выбрали не все доступные но лишь те, кото рые необходимы для данного Web-приложения.

Microsoft Information Services 5. 1. ffDate: 2002-05- ttFields: date time sc sc-bytes cs-bytes 2002-05-24 GET 200 четыре строки расширенного журнала W3C, еся с символа директивы или заголовочную инфор мацию, в том числе номер версии формата дату и вре мя создания файла, а также идентификаторы полей, выводимых и настройка производительности Web-уровня в каждой записи журнала. Префиксы полей в табл. 6-2, 6-2. Идентификаторы полей Extended Log File Префикс Значения s- сервера Действия клиента Вызов сервера клиентом sc- Вызов клиента сервером В табл. 6-3 приведен полный список формата журнала W3C Extended Log File Format.

6-3. Поля формата W3C Extended Log File Format Обозначение Описание Дата Date Дата операции Время Time Время операции IP-адрес клиента c-ip IP-адрес клиента, обратившегося к серверу Имя c-username Имя пользователя, обратившегося к серверу. пользова тели дефисом Имя и номер Номер Интернет-сервиса экземпляра и экземпляра, исполняющегося сервиса на клиентском Имя сервера Имя на котором рирована данная запись журнала IP сервера ;

IP-адрес на котором сгенерирована данная запись журнала которое пытался Метод выполнить клиент (например, метод GET) Запрошенный ресурс, например URI htm Запрос, пытался выпол Запрос нить клиент, если запрос был Статус завершения http Статус см. след. стр.

Глава 6-3.

Поле Обозначение Сатус Win32 Статус Windows Отправлено sc-bytes отправленных сервером байт Получено байт Количество полученных байт Порт сервера Номер порта, к которому подключился клиент Затраченное time-taken Продолжительность выполнения операции Версия протокола Версия протокола (HTTP, использованная клиентом.

HTTP это либо HTTP либо HTTP 1. Пользовательский cs(User-AgentJ Браузер клиента агент Cookie cs(Cookie) Содержимое или (если имеется) Предыдущий сайт, посещенный этим пользователем, то ссылку на данный сайт Генерация журнала включена в IIS по умолчанию и может быть отключена на уровне сайта, каталога или для чего следу ет щелкнуть нужный элемент и очистить поле флажка Log Visits (Запись в в диалоговом окне свойств оснастки как показано на рис.

Отключение генерации журнала для некоторых каталогов, содер жащих статичные или редко меняющиеся файлы, еще один метод сокращения размеров журнала Web-сервера и экономии дискового пространства. Например, только при просмотре стар товой страницы Web-прило жения IBuySpy в журнал IIS будет помещено 16 Эта стра ница ссылается на 14 картинок, одну таблицу и плюс сам Default.aspx. Помните, что с точки зрения пользователя, это один запрос хотя при его обработке на Web-сервер и Анализ и настройка производительности Web-уровня лается несколько HTTP-запросов (один запрос на один на таблицу стилей и на Можете себе предста вить, каких размеров достигнет журнала и сколько места на диске он займет при обработке сценария нагрузочного тести рования, запрашивающего множество страниц через несколько на протяжении длительного времени.

toiy HTTP Custom to the Рис. 6-1. Флажок Log Visits Есть несколько способов установить количество элементов, на которые ссылается страница, а также размеры из фай лов. Например, при анализе одной страницы сначала очищают кэш браузера, а затем выполняют из браузера запрос этой стра ницы. Все файлы, на которые ссылается эта страница, должны отображены за один запрос. размеры элементов страницы, просмотрев свойства этих файлов.

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

154 Использование для выявления проблемных Теперь, когда вы узнали о содержимом файла журнала, мы рас смотрим почти реальный пример использования файла журнала MS для быстрого поиска ошибок на Web-уровне.

Код сайта IBuySpy написан очень эффективно, поэтому сна чала нам придется самим создать проблему в коде страницы для задержки стра ницы. Мы говорили ранее, что это почти реальный пример, так как данный код вызывает одинаковые результаты на не скольких разных машинах. Если бы мы попытались создать демонстрационный код, реализующий плохо написанную кон катенацию строк или некий цикл, большое количество строк базы данных, то и вре мя ASPX для страницы ProductList.aspx оказалось бы разным в зависимости от аппаратной конфигурации. На странице ProductList.aspx закомментируйте четвертую строку:

Затем приведенный ниже код между и в пятой строке ProductList.aspx.

СДЕЛАТЬ: 4 строку -Это отключит OutputCache, что позволит -нам ввести 2. Отключите ведение журнала для файла подката логов и Productlmages, чтобы сосредоточиться на ана лизе запросов к файлам типа ASPX.

ПРИМЕЧАНИЕ Это не умаляет важности оптими зации или размеров ваших картинок или таблиц чтобы исключить вероятность лузкого места Web-приложения.

Лнализ и настройка производительности Web-уровня 3. что пример установлен правильно.

Затем в параметрах IIS удостоверьтесь, что выбран формат W3C Extended Log File Format и в нем следующие date, time, sc-status, sc-bytes, cs-bytes, time-taken.

4. Наконец, выполните одну итерацию тестирования Browse с помощью Microsoft ACT. Сценарий тестирования Browse находится на прилагаемом к книге по добно о нем говорилось в главе 3. Это не нагрузочный тест, но скорее автоматизированное выполнение пользовательско го сценария, так как мы выполняем одну итерацию в единственной сессии.

Результаты исполнения сценария в журнале та ковы:

Microsoft Internet Information Services 5, 1. 2002-05-30 18:36: tfFields: date time c-ip cs-method cs-uri-query sc status sc bytes cs-bytes time-taken 2002-05-30 18:36:11 GET 200 0 346 2002-05-30 18:36:18 GET 200 0 377 2002-05-30 18:36:18 GET /storevbvs/ 200 0 357 Обратите внимание, что в приведенном журнале три запроса, Сначала, вам нужно убедиться в том, что все запросы выполни лись без ошибок. Для этого следует просмотреть поле sc-status Ч код Табл. 6-4 содержит полезную сводку кодов состо яния HTTP.

6-4. состояния HTTP Состояние Описание 200 ОК: запрос успешно Создан: запрос отработал успешно, в результате создан новый ресурс см. след. стр.

6-4. (продолжение) Состояние Описание 202 Принят: запрос был принят на обработку, но не был за 204 Нет содержимого: у сервера нет информации, которую можно было бы возвратить Зхх Перенаправление 301 Перемещено: данные перемещены на новое место и это изменение постоянно 302 Найдено: запрашиваемые временно имеют гой URL 303 Метод: рекомендация клиенту попробовать адрес 304 Не изменено: документ не был изменен, как ожидалось 4хх Вероятные ошибки клиента 400 Неверный запрос: неверный синтаксис или запрос не может выполнен 401 Неавторизован: у клиента нет доступа к данным 402 Требуется оплата: указывает на применение схемы оплаты 403 Запрещено: нет даже при наличии авторизации 404 Не найдено: сервер не может найти данный ресурс 5хх Вероятные ошибки сервера 500 Внутренняя ошибка: сервер не может выполнить запрос из-за неожиданно возникших проблем 501 Не реализовано: сервер не поддерживает данную операцию 502 Сервер перегружен: сервер перегружен или на обслуживании 503 Тайм-аут шлюза: сервер выдал запрос другому сервису, который не обработал этот запрос своевременно Все три записи журнала соответствуют запросам СЕТ (как указы вает название метода) и выполнились успешно с кодом заверше ния 200, Кроме того, объемы пересылаемых данных невелики (как показывают поля количества принятых и отправленных байт).

Время исполнения ASPX из поля time-taken невелико для страни цы но для ProductList.aspx составляет более семи секунд (точнее, миллисекунд). Итак, мы выявили проблему.

Анализ и настройка Web-уровня Журналы очень полезны для выявления медленно работающих или пересылающих большие объемы данных а также при поиске ошибок Web-приложения. Теперь, когда мы успешно вы проблему на уровне страницы, обсудим средство позволяющее нам определить место возникновения проблемы с точностью до строки кода.

Трассировка на уровне Трассировка Ч это полезное средство для отлад ки и профилирования проблем, возникающих на уровне прило жения, страницы или Вы можете распечатывать операто ры во время исполнения кода, что позволит точно определить, что же происходит в данной точке программы. В традиционных ASP-страницах отладка выполнялась путем вставки в код много численных операторов Чтобы вы полностью оце нили средство трассировки мы кратко обсудим используемый нами метод выделения медленно работающего кода на традиционных ASP-страницах.

Трассировка обычных После того как с помощью журналов установлены файлы с большими временами исполнения, мы обычно вставляем в текст страницы несколько чтобы выделить медленно рабо тающий код. При обращении к странице значения ре гистрируются в текстовом файле посредством локальной файло системы Далее достаточно просто открыть полученный текстовый файл, чтобы информа цию таймеров, записанную туда между блоками кода. Ниже при веден пример файла на Dim t1, t 1 - запуск таймера для секции ВСТАВИТЬ СЮДА БЛОК КОДА 2 - запуск таймера код может быть в конец файла ASP.

Dim filename, fileref filename + + каждом исполнении страницы создается новый файл.

Глава SET = SET fileref = ) значения таймеров в в файл.

+ cstr(t1) + + + файл.

способ поиска медленно кода на ционных таков: сначала надо сколько занимает исполнение немодифицированного кода страницы.

Затем нужно поместить вызов метода в различные места страницы и выполнять запрос к засекая время обработки. Когда метод прекратит исполнение кода, можно сравнить новое время исполнения со временем ния первоначального запроса. Часто для определения места воз никновения проблемы требуется несколько итераций этого ме тода, при этом вы можете получать ошибки, так как код не ис полняется целиком.

Трассировка в В трассировка возможна либо на уровне страницы, либо на уровне приложения. Трассировка на уровне страницы реали зуется путем добавления в директиву Раде в начале Полностью это так:

Page В результате после генерации собственно содержимого страни цы к нему будет добавлена В ней содержится подробная информация о запросе: время дерево серверных элементов (с размером заго ловок. cookie, строка запроса вместе с параметрами формы, переменные сервера. Кроме того, вы можете добавлять свои сообщения, методы Trace. или Trace. Оба метода генерируют одни и те же результаты, но вы водит их красным цветом.

СОВЕТ ваше внимание на то, что трас сировку следует только во отладки Анализ и настройка производительности Web-уровня Web-приложения. По журналу MS можно что объем пересылаемых от сервера клиен ту для страницы ProductList.aspx, возрастает при включенной трассировке с до 32695 байт, Этот почти троекратный рост данных легко может исказить результаты нагрузоч ного тестирования.

на уровне приложения G Web.config следующим образом.

Выявление проблемного кода на страницах ASPX Вернемся к предыдущему примеру, где с помощью журнала MS мы определили медленно исполняющуюся и восполь зуемся новым методом Trace для изоляции кода, вызывающего задержку при обработке страницы ProductList.aspx.

Проверьте, что вы включили трассировку на уровне приложе ния, текст в Web.config, располо женный в корневом каталоге Web-приложения

' СДЕЛАТЬ:

-Закомментировать 4 строку -Это отключит что позволит -нам ввести задержку.

Delay", "Timer 1:

Delay", "Timer 1: End") Application Trace StoreVBVS Requests Рис. 6-2. Результаты исполнения тестового сценария Browse Анализ и настройка производительности Web-уровня 3. Один раз упоминавшийся сценарий Browse с помощью Microsoft ACT. Так вы смоделируете исполнение пользовательского сценария.

4. на Web-сервере, где установлен сайт-пример введите в вашем браузере:

Три запроса, нашим сценарием, должны отобразиться так, как показано на 6-2.

Обработчик HTTP отобразит примерно ту же инфор мацию, что мы видели ранее в журнале II5. ясно, что про блема возникает на странице так как на ее за грузку требуется более 7 секунд. Теперь щелкните гиперссылку Details на странице ProductList.aspx.

rites * ' Х О ( Request Details Х Request т Request Type:

6/4/2002 Code: Request Encoding: Encoding: Unicode race Information Х заде Begin 0, asp. End 0. page End 0. Render 0 о ХJ End Х tel:a*i.^ja~*-л^-l-r.

Рис. 6-3. Трассировочная информация выводится красным цветом Вы сразу же заметите текст, который мы с помощью Warn, так как он набран красным цветом. На рис, 6-3 добав ленный нами код вы под заголовком Trace в категории Find Delay. Около семи секунд занимает исполнение Глава кода между двумя добавленными нами ми строки Timer Begin и Tinner End. мы снова ус пешно отыскали место возникновения ошибки. что проблема кроется именно здесь, можно, закомментировав подо зрительную строку кода и снова страницу ProductList.aspx браузера, При этом время загрузки должно уменьшиться на 7 секунд Ч это докажет, что проблема найдена верно.

Счетчики системного монитора монитор превосходным инструментом для мониторинга и анализа производительности Web-приложений В процессе тестирования параметры производительно сти можно анализировать в реальном времени или записывать в журнал для последующего изучения. Измеренные параметры производительности используются для поиска возможных про блем производительности, таких, как неэффективное использо процессора или а также иных факторов, не позво ляющих приложению показывать требуемые значения произво дительности на производительности IIS следующих разделах мы расскажем о счетчиках и счетчиках производительности используемых нашей группой во тестов производительности.

Х Internet Information Services Global (Общий объект служб IIS): File Cache Flushes удалений кэша файлов) и File Cache Hits (Попаданий в кэш файлов) Сравнение значений этих счетчиков позволяет определить отношение числа попа даний в кэш к числу сбросов кэша. Сброс кэша происходит, когда удаляется из кэша. Эти глобальные счетчики зволяют определить частоту, с которой объекты удаляются из кэша. Если сбросы кэша происходят слишком медленно, память расходуется напрасно.

Х Internet Information Services Global объект служб IIS): File Cache Hits % (Процент попаданий в кэш файлов) Показывает отношение попаданий в кэш к числу к кэшу. Для Web-узлов, имеющих, в основном, статичное со держимое, этот показатель должен быть около 80%.

Анализ и настройка Web-уровня Х Web Service (Веб-служба): Bytes Total/sec (Всего байт в се кунду) общее и принимаемых Web-сервером за секунду. Малое значение ворит о том, что US передает данные с малой скоростью.

Х Web Service (Веб-служба): Connection Refused (Отклонено запросов) Чем меньше, тем лучше. Большие зывают на наличие лузкого места, с сетевым адап тером или процессором.

Х Web Service (Веб-служба): Not Found Errors (Ошибок Не найдено) Показывает количество не обработан ных сервером, так как запрашиваемый документ не был най ден (код состояния HTTP 404).

Счетчики производительности ASP.NET В ASP.NET предусмотрено два набора счетчиков производитель ности для мониторинга производительности Web-приложения.

Они относятся к объектам ASP.NET и приложениям ASP.NET. Эти счетчики имеют несколько экземпляров, каждый со своим ром версии. Счетчики без номера версии всегда соответствуют версии с самым большим номером из всех, установленных на компьютере.

Системные производительности ASP.NET Мы не будем рассматривать все и счетчики тельности в Framework. Подробно о них рассказано на Web Microsoft MSDN и в справочной информации no Framework. В главе мы поговорим о системных счетчиках производительности, а также счетчиках производительности при ложения, используемых при мониторинге и ана лизе производительности Web-приложений Х Restarts как часто перезапускается Web-приложение. Перезапуск приложения возможен из-за конфигурации и двоичных сборок или слишком большом числе измерений страниц. Значения счетчика сбра сывается в 0 при всяком перезапуске IIS или w3svc.

Х Requests Queued Количество запросов, ожидающих обслу живания. Если это значение начинает расти в той же степе ни, что и нагрузка со стороны клиентов, значит, достигнут пре Глава дел Web-сервера по параллельной обработке запросов.

Х Requests Rejected Общее количество запросов, не выпол ненных из-за недостатка серверных Данный счет чик показывает число запросов, ответ на которые был воз вращен код состояния HTTP 503 is too В идеа ле количество отвергнутых запросов должно равно 0.

Х Request Wait Time Число миллисекунд ожидания обработки последним запросом. Средний запрос в идеале должен ожи дать обработки буквально мгновение.

Счетчики приложения поддерживает счетчики производительности ния, позволяющие за производительностью одного экземпляра приложения Все они имеют экземпляр суммарному значению данного счетчи ка для всех приложений Web-сервера. Экземпляр _Total_ досту пен всегда. Если на сервере нет ни одного приложения, то зна чения счетчиков равны 0.

Cache Total Turnover Rate Число добавлений и удалений из кэша в секунду. Большое значение указывает на неэффектив ность использования кэша.

Х Errors Total Общее число ошибок синтаксического анализа тора, компилятора и времени при обработке HTTP-запросов. Хороший Web-сервер не должен генериро ошибки.

Х Request Execution Time Количество миллисекунд, потрачен ных на исполнение последнего запроса. Значение данного счетчика должно стабильным.

Х Requests Failed Общее число запросов, в результате которых возвращены ошибки авторизации и не найденных ресурсов (HTTP 404 или или вызвавших ошибку сервера (HTTP 500).

Х Requests Not Found Количество не выполненных из-за что не найдены соответствующие ресурсы (HTTP 404 или Анализ и настройка производительности Web-уровня Х Requests Not Authorized Количество запросов, не ных из-за попытки неавторизованного доступа (HTTP 401).

Х Requests Timed Out Количество запросов, завершившихся по тайм-ауту.

Х Requests/Sec Количество исполняемых в секунду.

При нагрузке это значение должно оставаться в заданном диапазоне.

В предыдущем разделе описаны счетчики а также счетчики производительности регулярно используемые нашей группой для мониторинга и анализа Советы по настройке производительности Настройка производительности подразумевает устранение луз ких мест и в код с целью достижения желаемых показателей пропускной способности или времени от клика при одновременном сохранении масштабируемости. Новые возможности такие, как кэширование и новые методы доступа к данным, позволят вам существенно повысить произ водительность и масштабируемость. Отключение некоторых, по умолчанию, средств, таких, как состояние сессии или состояние если в них нет необходи мости, также положительно сказывается на производительнос ти Web-приложения.

Состояние приложения и состояние сессии Ранее поддерживать работу распределенного по нескольким Web-серверам, не создавая при этом проблем производительности и масштабируемости, было непросто. При ложения больше возможностей по срав нению с традиционными ASP-приложениями, однако при исполь зовании любой из них вам учитывать про тиворечия между производительностью и масштабируемостью.

Состояние приложения Традиционно переменные приложения использовались для хра нения такой информации, как строки или как ханизм значений и наборов данных для их исполь зования при обработке нескольких запросов. Переменные при Глава ложения no-прежнему существуют в но для реализации многих функций, которые они выполняли в традиционных ASP теперь новые, более эффективные методы. Используйте для хранения строк под ключения к базе данных подключения к базы данных. Для хранения востребован ных данных используйте обсуждаемый далее механизм кэширо вания. V состояния приложения no-прежнему есть ограничение:

оно не может совместно использоваться несколькими зерами.

Состояние сессии Состояние сессии Ч это данные, хранящиеся з памяти Web-сер вера для каждого обратившегося к нему пользователя. Ранее состояния сессии в Web-приложении сопровождались рядом проблем. Протокол, используемый для выполнения запро сов (HTTP), не поддерживает сессии, поэтому в традиционных Web-приложениях клиенту назначался который возвращался серверу в последующих запросах в пределах неко торого интервала времени. Если Web-приложение работалло нескольких машинах или на Web-ферме, пользователь при сле дующем запросе мог быть переназначен на другой компьютер, в результате чего cookie сессии терялось, так как его запрещено передавать между разными компьютерами.

решает некоторые проблемы свя занные с использованием Web-фермами сессии, по зволяя хранить его вне процесса внутри сервиса Windows или в базе данных SQL Server. Помните, что при хранении сессии вне процесса достигается масштабируемость, но ется производительность. По умолчанию в поддержка состояния сессии активизирована в режиме внутри процесса. Данный режим создает для приложений те же ограничения, о которых мы говорили ранее в контексте тра диционных ASP-приложений, однако представляет наибо лее быстрый и эффективный метод реализации состояния сес сии, когда это необходимо. Мы рекомендуем отключать состоя ние сессии в файле Web.config или на уровне страницы всегда, кроме тех случаев, когда без него абсолютно нельзя На Анализ и настройка производительности Web-уровня уровне страницы состояние сессии отключается при помощи директивы Page = "False" Кэширование в ASP.NET В механизмы кэширования значительно улучшены и при правильном применении способны значительно повысить произ водительность приложения. В ASP кэширование реализовано либо посредством хранения всех данных в переменных сессии или переменных приложения, либо путем использования специ ализированных методов кэширования. В ASP.NET все эти вари анты дополнены новыми средствами. Теперь результаты работы целой страницы можно поместить кэш с помощью директивы. Кроме предусмотрены механизмы и API кэши рования, позволяющие хранить любую часто используемую ин формацию.

ПРИМЕЧАНИЕ Мы рекомендуем ре зультаты работы тех страниц приложения ASP.NET, к которым пользователи обращаются весьма часто, однако после настройки не забывайте выпол нять тесты. Не злоупотребляйте кэшированием, так как кэширование слишком больших данных требует значительных ресурсов памяти. Чтобы убе диться в том, что кэш используется эффективно, за значением счетчика производи тельности Cache Turno ver Rate\Total. Оно должно быть малым или сораз мерным частоте объявления страниц недействительными.

Кэширование Кэш результатов ASP.NET может использовать память сервера для хранения результатов обработанных и готовых к отправке клиенту страниц. При включенном кэшировании результатов страница сохраняется после первого обращения к ней. Последующие за просы к странице удовлетворяются из кэша, если страница по в нем, и возвращаются клиенту сразу, без разбора, компиляции и обработки. Это существенно улучшает время от клика и снижает потребление ресурсов сервера.

Глава результатов для страниц легко включается с помо щью директивы Например, чтобы сохранять тат обработки страниц на не более 60 на страницу можно поместить следующую директиву:

OutputCache Атрибуты и являются обязательными.

ПРИМЕЧАНИЕ чтобы при кэши ровании результатов обработки страниц значение Duration не менее 60 в против ном случае частое повторное помещение страницы в кэш приведет не к повышению, но к снижению производительности.

Для страниц с коротким временем жизни, но содержащих инфор мацию, получение которой может потребовать значительных ре сурсов, лучше объект Cache, позволяющий ровать и обновлять данные по мере необходимости (см. раздел API Атрибут VaryByParam позволяет кэшировать разные версии страницы. Например, страницы могут генериро вать разные результаты s зависимости от входных параметров.

Значение None атрибута сохраняет результат рабо ты страницы в каких-либо входных параметров при обращении к Чтобы сохранить версии страницы для всех возможных сочетаний параметров, можно использовать значе ние При этом, следует иметь в виду, что кэширова ние нескольких версий страницы требует дополнительной памя ти. Для кэширования результатов на основании некоторого па раметра строки запроса или значения поля формы на странице, следует задать имя параметра. Допускается указать несколько параметров, разделенных точкой с Например, если на странице расположена форма ProductCategory и поля Product, допустимо кэшировать варианты страницы на основании значе нии этих параметров:

OutputCache Анализ и настройка Web-уровня Помимо атрибутов у директивы еще три атрибута;

VaryByCustom и Header. Атрибут Location указывает, где кэшируются дан ные (например, на сервере или на позво ляет выполнять кэширование на основании определенных заго ловков запроса, a VaryByCustom Ч на основании типа браузера, если указан со значением Browser, либо этот параметр применя для реализации нестандартной логики с использованием любых иных данных.

Кэширование фрагментов Кэширование фрагментов похоже на кэширование результатов в смысле использования же директивы. Данный уро вень кэширования для кэширования фрагментов страницы, реализованных как пользовательские элементы и его также называют частичным кэшированием страни цы или кэшированием элементов управления. Возможность кэ ширования фрагментов следует рассматривать когда в кэш можно помещать большие объемы информации и кэширо вание на уровне страницы невозможно с точки зрения исполь зования ресурсов памяти сервера и кэша. Как и в случае кэши рования результатов, кэширование фрагментов показывает наи лучшие когда помещаемые в кэш данные мало под вержены или когда для их первоначального получения требуются значительные ресурсы.

Для реализации кэширования фрагментов директиву сле дует включить в файл, реализующий элемент управления. Атри буты Duration и обязательны и имеют в точности то же значение, что и при кэшировании результатов. Кроме того, при кэшировании фрагментов можно использовать еще и атрибут VaryByControl, допустимый только в файле пользовательского элемента OutputCache кэширования API кэширования позволяют сохранять в памяти сервера любую информацию, которую вам многократно использовать. До пустим, например, что помимо информации на странице Глава необходимо отображать категории Вместо того чтобы при каждом запросе считывать эту информацию из базы данных, следует сохранить категории при помощи API кэширования. Вот наиболее способ кэширования данных:

= "some data" Разрешается сохранять не только строки или но и целые наборы данных. Получить данные из кэша столь же просто:

X = В качестве других полезных методов предлагаются уда ляющий элемент кэша, и Insert, используемый для добавления данных в кэш. Ниже показан пример использования Remove:

Метод Cache совмещенным и имеет несколько Например, вот какую версию можно использовать для добавления при первом обращении к страни це элемента к кэшу без внешней зависимости и с абсолютным временем хранения, равным минутам:

mydata, _ параметр здесь называется скользящим окном, его применяют установки времени хранения элемента в кэше относительно момента, когда элемент был впервые помещен в кэш или последний раз оттуда Другими словами, этот параметр равен максимальному промежутку времени между по следовательными вызовами, который должен пройти, прежде чем данный элемент удаляется из кэша. Например, чтобы поместить элемент в кэш максимум на минут между последовательными обращениями к нему, можно вызвать Insert следующим образом:

mydata, nothing, Отключение состояния отображения отображения (ViewState) позволяет передавать свой ства страницы (обычно, формы) следующей странице, сохраняя и шифруя данные каждого элемента управления в Лнализ и настройка производительности Web-уровня виде скрытого формы, отправляемого браузеру. Размер и содержимое данных состояния отображения определяют директивы Trace на страницы или приложения, как говорилось разделе Профилирование Web-приложения При применении большого числа элементов управле ния размеры состояния отображения могут стать очень больши ми, а значит, снизить производительность Web-приложения. Ре комендуется отключать состояние отображения кроме случаев, когда оно абсолютно необходимо. этого следует установить свойство на уровне страницы или элемента управления.

ADO.NET Большинство серверы баз данных.

Связь с уровнем данных и управление данными много значит для производительности приложения наряду с другими такими, как объем пересылаемых данных и архитектура базы данных. Поэтому вам необходимо знать модель ADO.NET.

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

Более подробную информацию об ADO.NET вы в источ указанных в начале главы.

В состав Framework входит два (data provider): OLE DB Data Provider и SQL Server.NET Data Provider. для OLE DB Data Provider для подключения к любому источнику данных, для которого существу ет компонент доступа OLE DB, например к Microsoft SQL Server или Oracle, но главным образом он предназначен для баз данных, отличных от SQL Server. Для использующих Microsoft SQL Server версии 7.0 и выше, предпочтительнее провайдер дан ных SQL Server. Он оптимизирован с учетом особенностей SQL Server и обеспечивает доступ к некоторым возможностям, харак терным для этой базы данных.

SQL Server Data Provider ис пользуется с SQL Server версии 7.0 или выше.

Глава Первым шагом при обращении к уровню данных является уста сессии с сервером базы данных. Для этой цели провай дер данных SQL Server предоставляет объект Со здать сессию очень просто, что демонстрирует код на устанавливающий сессию с SQL Server на локальном компьютере и подключающийся к базе данных Pubs:

Dim As String = "Data Source _ "Integrated & "Initial Catalog = Pubs" Dim objCn as New _ По умолчанию этот провайдер данных использует пул позволяет сократить накладные расходы на создание сес сии всякий когда требуется доступ к так как вся рабо та заранее при первом создании сессии. Важно пони мать работу этого средства и уметь им пользоваться. Чтобы вос пользоваться сессией из пула, строка для новой сес сии должна в точности соответствовать строке соединения, использовавшейся ранее. Даже из-за лишних пробелов в строке среда создаст отдельный пул. Фактически среда созда ет отдельный пул сессий для каждой новой строки соединения.

Из этого следует, что соединения, применяющие разные имена и пароли, не смогут воспользоваться пулом сессий.

ПРИМЕЧАНИЕ Для повышения эффективности использования пула приложения должны либо применять интегрированную защиту, когда это возможно, либо одно и то же пользователя и па роль для всех клиентов приложения.

Pages:     | 1 | 2 | 3 | 4 |    Книги, научные публикации