Рисунок 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!
· Увеличение производительности серверной машины
· Использование нескольких серверов