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

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

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

Select *from tblUsers Where UserID=1

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

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

Число заявок (в сек) 0 6000 9800 11400 12700
ЦП 3% 40% 77% 98% 100%

Рисунок 30

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

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

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

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

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

Число заявок (в сек) 0 160 230 520 630 650 670
ЦП 3% 30% 42% 52% 80% 98 100

 

Рисунок 31

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

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

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

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

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

Таблица 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!

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

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