Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РПЗ САФИН.docx
Скачиваний:
78
Добавлен:
23.03.2016
Размер:
2.28 Mб
Скачать
    1. Нагрузочное тестирование

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

Данное исследование будем проводить на персональном компьютере с процессором Core i5 2410M 2300 Mhz. Это процессор, имеющий 2 физических ядра, на каждом из которых работают по 2 логических. Остальные характеристики компьютера не являются столь важными для данного исследования.

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

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

Рисунок 29. Приложение для осуществления нагрузочного тестирования

  1. Стресс-тестирование при простом запросе

Для данного тестирования использовался следующий запрос: Выбрать пользователя, ID которого равен 1

Select *from tblUsers Where UserID=1

Результаты тестирования представлены в таблице .

Таблица 24. Тестирование на простом запросе

Число заявок (в сек)

0

6000

9800

11400

12700

ЦП

3%

40%

77%

98%

100%

Рисунок 30

  1. Стресс-тестирование на запросе средней сложности

Для данного теста использовался запрос: выбрать все совершенные платежи клиента с ID, равным 1

EXEC sp_get_payments 1; (запрос обращается к 4 таблицам)

Результаты тестирования представлены в таблице .

Таблица 25. Тестирование на простом запросе

Число заявок (в сек)

0

160

230

520

630

650

670

ЦП

3%

30%

42%

52%

80%

98

100

Рисунок 31

  1. Стресс-тестирование на сложном запросе

Для данного теста использовался запрос: показать все курсы, на которые может записаться восьмиклассник, если предмет обучения включает комбинацию символов “англ”, а название курса включает комбинацию символов “adv”

EXEC sp_get_courses_using_class '%англ%','%adv%', 8

(запрос обращается к 6 таблицам)

Результаты тестирования представлены в таблице .

Таблица 26. Тестирование на простом запросе

Число заявок (в сек)

0

110

240

310

330

ЦП

3%

35%

58%

85%

100%

Рисунок 32

Результаты показали, что степень загруженности процессора зависит от степени сложности процессора не меньше, чем от числа обрабатываемых запросов в единицу времени. Так, например, сервер будет работать на всю мощь, если к нему каждую секунду будут обращаться 12000 пользователей с простым запросом, или всего 330 со сложным. Такие результаты вполне могут устроить тех, кто рассчитывает посещаемость своего сайта в 1000-10000 человек в день. Но для сайтов с большой посещаемостью, этого недостаточно. Основное и при этом простое правило, которого должен придерживаться веб-программист, звучит так: “Страница должна грузиться не более 3-5 секунд”. И если это происходит дольше, нужно переписывать его код заново, либо использовать другие решения.

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

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

Таблица 27. Время загрузки веб-страницы при различных уровнях загруженности сервера

Время загрузки страницы, когда никто не обращается к базе и ЦП работает на 1-3%

Время загрузки страницы при максимально возможном числе обращений к базе, когда ЦП работает на 98-100%

0 с 153 мс

0 с 812 мс

0 с 262 мс

0 с 966 мс

0 с 98 мс

0 с 396 мс

0 с 112 мс

1 с 72 мс

0 с 394 мс

0 с 403 мс

0 с 324 мс

0 с 850 мс

0 с 361 мс

1 с 417 мс

0 с 25 мс

0 с 862 мс

Среднее: 0 с 216 мс

Среднее: 0 с 847 мс

При максимальной загрузке сервера время загрузки веб-страницы в 4 раза больше, чем когда ЦП сервера не загружен. Тем не менее, это время считается удовлетворительным по отношению к веб-сайту, так как меньше 3 секунд. Такие результаты были получены в результате следования основным принципам программирования и создания веб-сайтов, а именно:

  • Использование хранимых процедур для получения доступа к данным;

  • Хеширование основных запросов;

  • Загрузка не всей веб-страницы, а только необходимых данных (при использовании Ajax и Jscript);

  • Улучшение и оптимизация кода.

Как еще можно увеличить скорость загрузки страниц:

  • Оптимизация таблиц стилей CSS

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

Но это ещё не всё, полученный файл можно оптимизировать. Удалить пробелы, ненужные строки, сократить информацию о цветах. Например, заменить белый цвет “#FFFFFF” на короткое написание “#FFF”. Всё это в итоге скажется на размере конечного файла и процесс загрузки пусть немного, но ускорится.

Таблицы стилей лучше всего подключать в области тега HEAD, он находится в верхней части веб-страницы;

  • Оптимизация JavaScript

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

  • Использование CSS спрайтов

В случае использования технологии CSS спрайтов всё множество запросов на картинки заменятся на один единственный. Суть этого подхода в том, что создаётся одна картинка, в которой в определённых местах с заранее известным местоположением размещаются несколько, в среднем до 20, которые ранее подгружались отдельно. Теперь не нужно писать несколько строк с подключением каждой картинки, а указать одну строку для вызова общей, и в дальнейшем просто указать определённые отступы для конкретной картинки, которая необходима. Таким способом мы сократим число запросов от браузера примерно с 20 до 1!

  • Увеличение производительности серверной машины

  • Использование нескольких серверов

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]