Сегодня я хочу рассказать о DVD Store - популярном средстве тестирования производительности серверов. DVD Store представляет собой набор скриптов и утилит, позволяющих создать базу данных для Интернет магазина по продаже DVD дисков и в условиях приближенных к боевым провести нагрузочное тестирование СУБД. DVD Store поддерживает различные СУБД (Oracle Database, Microsoft SQL Server, MySQL и PostgreSQL) и может быть установлен на физическом сервере или в ВМ под управлением ОС Windows или Linux. DVD Store также используется в качестве одного из тестов известного бенчмарка VMmark, разрабатываемого компанием VMware.
Тест DVD Store имет двухзвенную архитектуру (сервер приложений, выполняющий запросы, и СУБД), оба компонента могут быть установлены локально на одном сервере, либо на разных (для более корректного тестирования производительности или для оценки масштабирования физического сервера). Сервер приложений имитирует действия пользователей, заходящих в Интернет магазин и покупающих DVD диски. Производительность измеряется в opm - orders per minutes / заказах в минуту, которые может обработать СУБД. DVD Store также замеряет утилизацию процессора, среднее и максимальное время обработки одного заказа.
В первой части я опишу процесс установки и подготовки DVD Store на одном сервере под управлением ОС Windows Server 2016 для тестирования СУБД Microsoft SQL Server 2017 для запуска локальных тестов. Процедура установки подходит и для более ранних версий СУБД и ОС. Во второй части я более подробно остановлюсь на процедуре подготовки эталонной ВМ для автоматизированного развертывания и тестирования DVD Store на большом количестве серверов.
На текущий момент доступна уже третья версия DVD Store (ds3), хотя большая часть руководств и замеров производительности, которые можно найти в Интернет, касается второй версии (ds2.1). Из-за различий в механизме тестирования некорректно сравнивать значения opm, полученные в версиях ds3 и ds2.1. Поэтому я детально опишу процедуру установки ds2.1 и кратко опишу отличия в установке для версии ds3.
Выполните установку сервера Windows Server 2016 в виртуальной машине. Рекомендуется создать отдельный виртуальный диск и назначить ему букву (например, E:\) под хранение базы и журналов.
Установите на сервер необходимые обновления и дополнительное ПО (антивирусные агенты, ПО мониторинга, средства резервного копирования и т.д.) для того, чтобы сервер был в условиях близких к производственной среде.
Последний шаг, создайте на диске E:\ каталог SQL\dbfiles\, в котором будут храниться тестовая база и журналы.
Тест DVD Store имет двухзвенную архитектуру (сервер приложений, выполняющий запросы, и СУБД), оба компонента могут быть установлены локально на одном сервере, либо на разных (для более корректного тестирования производительности или для оценки масштабирования физического сервера). Сервер приложений имитирует действия пользователей, заходящих в Интернет магазин и покупающих DVD диски. Производительность измеряется в opm - orders per minutes / заказах в минуту, которые может обработать СУБД. DVD Store также замеряет утилизацию процессора, среднее и максимальное время обработки одного заказа.
В первой части я опишу процесс установки и подготовки DVD Store на одном сервере под управлением ОС Windows Server 2016 для тестирования СУБД Microsoft SQL Server 2017 для запуска локальных тестов. Процедура установки подходит и для более ранних версий СУБД и ОС. Во второй части я более подробно остановлюсь на процедуре подготовки эталонной ВМ для автоматизированного развертывания и тестирования DVD Store на большом количестве серверов.
На текущий момент доступна уже третья версия DVD Store (ds3), хотя большая часть руководств и замеров производительности, которые можно найти в Интернет, касается второй версии (ds2.1). Из-за различий в механизме тестирования некорректно сравнивать значения opm, полученные в версиях ds3 и ds2.1. Поэтому я детально опишу процедуру установки ds2.1 и кратко опишу отличия в установке для версии ds3.
Настройка ВМ и SQL Server
Загрузите триальные версии Windows Server 2016, SQL Server 2017 и актуальную версию SQL Management Studio с сайта Microsoft.Выполните установку сервера Windows Server 2016 в виртуальной машине. Рекомендуется создать отдельный виртуальный диск и назначить ему букву (например, E:\) под хранение базы и журналов.
Установите на сервер необходимые обновления и дополнительное ПО (антивирусные агенты, ПО мониторинга, средства резервного копирования и т.д.) для того, чтобы сервер был в условиях близких к производственной среде.
Установите .Net Framwork 3.5:
dism /online /enable-feature /featurename:NetFx3 /All
(Опционально) Включите RDP и доступ к файловым ресурсам по сети:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
netsh advfirewall firewall set rule group="remote desktop" new enable=yes
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=yes
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=yes
(Опционально) Включите удаленное управление сервером Windows Remote Management:
winrm /quickconfig -force
Установите SQL Server Management Studio:
SSMS-Setup-ENU.exe /install /quiet /norestart /log log.txt
Установите SQL Server 2017. Требуется установить компоненты SQL Database и Full-Text and Semantic Extractions for Search.
Пример параметров для автоматической установки SQL Server из ISO образа (где D:\ - буква CD-привода):
Пример параметров для автоматической установки SQL Server из ISO образа (где D:\ - буква CD-привода):
D:\Setup.exe /ACTION=Install /FEATURES=SQL,FullText /QS /IACCEPTSQLSERVERLICENSETERMS /INSTANCENAME="MSSQLSERVER" /INSTANCEID="MSSQLSERVER" /AGTSVCACCOUNT="NT Service\SQLSERVERAGENT" /AGTSVCSTARTUPTYPE="Manual" /SQLSVCSTARTUPTYPE="Automatic" /SQLCOLLATION="Latin1_General_CI_AS" /SQLSVCACCOUNT="NT Service\MSSQLSERVER" /SQLSYSADMINACCOUNTS="Administrator" /SECURITYMODE="SQL" /ADDCURRENTUSERASSQLADMIN="False" /TCPENABLED=1 /NPENABLED=0 /BROWSERSVCSTARTUPTYPE="Disabled" /SAPWD="P@ssw0rd"
Добавьте на брандмауэре Windows правило, разрешающее удаленный доступ к SQL Server:
netsh advfirewall firewall add rule name="SQL Server" dir=in protocol=tcp localport=1433 action=allow
netsh advfirewall firewall add rule name="SQL Server" dir=in protocol=tcp localport=1433 action=allow
Задайте для учетной записи sa пустой пароль. Учетная запись sa используется для создания и импорта тестовой БД DVD Store:
"C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.EXE" -S localhost -Q "USE master; ALTER LOGIN sa WITH CHECK_POLICY=OFF; ALTER LOGIN sa WITH PASSWORD=N''"
"C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.EXE" -S localhost -Q "USE master; ALTER LOGIN sa WITH CHECK_POLICY=OFF; ALTER LOGIN sa WITH PASSWORD=N''"
Последний шаг, создайте на диске E:\ каталог SQL\dbfiles\, в котором будут храниться тестовая база и журналы.
Установка DVD Store version 2.1
Загрузите и установите ActiveState Perl с настройками по умолчанию.
Загрузите DVD Store с сайта: http://linux.dell.com/dvdstore/. Вам потребуются два архива:
- ds21.tar.gz - содержит основные компоненты DVD Store.
- ds21_sqlserver.tar.gz - содержит компоненты для трестирования SQL Server.
Разахивируйте ds21.tar.gz и скопируйте папку ds2 в корень диска C:\ на сервере. Разархивируйте ds21_sqlserver.tar.gz и скопируйте папку sqlserverds2 в папку ds2.
Запустите скрипт Install_DVDStore.pl из каталога C:\ds2\.
Укажите размер тестовой базы и тип СУБД (MSSQL).
В DVD Store второй версии есть баг, связанный с созданием CSV файлов, содержащих тестовые данные. Поэтому в поле Please enter system type on which DB Server is installed (WIN / LINUX) требуется указать LINUX, в противном случае файлы CSV будут содержать некорректные символы переноса строк, из-за которых на этапе импорта будет возникать ошибка.
Дождитесь завершения создания тестовых файлов. Учтите, что все сгенерированные файлы будут храниться в папке C:\ds2\data_files, поэтому вам можте потребоваться увеличить размер диска, если вы планируете создавать большую тестовую базу.
В каталоге C:\ds2\sqlserverds2\ будет создан конфигурационный файл sqlserverds2_create_all_<размер_БД>.sql, например sqlserverds2_create_all_2GB.sql, содержащий команды Transact-SQL для создания базы данных, журналов и импорта данных. Запустите команду, указав путь к файлу:
osql -Usa -P -i sqlserverds2_create_all_2GB.sql
Дождитесь, когда команда завершится.
Перед запуском теста создайте бекап базы или снапшот ВМ для того, чтобы восстановить состояние сервера до начала теста и откатить сделанные изменения.
На этом настройку DVD Store version 2.1 можно считать завершенной.
Утилита принимает в качестве параметров различные настройки, с которыми будет запускаться тест. Для простоты настройки могут быть описаны в отдельном тестовом файле. Вот пример настроек, которые могут использоваться для тестирования созданной базы:
target=localhost
n_threads=1
ramp_rate=10
run_time=60
db_size=2GB
warmup_time=10
think_time=0
pct_newcustomers=20
n_searches=3
search_batch_size=5
n_line_items=5
virt_dir=ds2
page_type=php
windows_perf_host=localhost
linux_perf_host=
detailed_view=Y
Сохраните их в текстовом файле DriverConfig.txt в папке C:\ds2\sqlserverds2\. Запустите утилиту из командной строки:
ds2sqlserverdriver.exe --config_file=DriverConfig.txt
Если все настройки были выполнены корректно, то в окне появится метрики, полученные от тестов.
Укажите размер тестовой базы и тип СУБД (MSSQL).
В DVD Store второй версии есть баг, связанный с созданием CSV файлов, содержащих тестовые данные. Поэтому в поле Please enter system type on which DB Server is installed (WIN / LINUX) требуется указать LINUX, в противном случае файлы CSV будут содержать некорректные символы переноса строк, из-за которых на этапе импорта будет возникать ошибка.
Дождитесь завершения создания тестовых файлов. Учтите, что все сгенерированные файлы будут храниться в папке C:\ds2\data_files, поэтому вам можте потребоваться увеличить размер диска, если вы планируете создавать большую тестовую базу.
В каталоге C:\ds2\sqlserverds2\ будет создан конфигурационный файл sqlserverds2_create_all_<размер_БД>.sql, например sqlserverds2_create_all_2GB.sql, содержащий команды Transact-SQL для создания базы данных, журналов и импорта данных. Запустите команду, указав путь к файлу:
osql -Usa -P -i sqlserverds2_create_all_2GB.sql
Дождитесь, когда команда завершится.
Перед запуском теста создайте бекап базы или снапшот ВМ для того, чтобы восстановить состояние сервера до начала теста и откатить сделанные изменения.
На этом настройку DVD Store version 2.1 можно считать завершенной.
Установка DVD Store version 3
Установка ds3 во многом повторяет процедуру установки ds2 за исключением некоторых исправленных багов, а также отличий в именах каталогов и файлов (ds3 вместо ds2). Загрузите ds3 со страницы проекта на GitHub: https://github.com/dvdstore/ds3/archive/master.zip.
Загрузите и установите ActiveState Perl с настройками по умолчанию.
Распакуйте архив в папку C:\ds3, в архиве уже присутствует папка sqlserverds3 со скриптами для настройки и тестирования БД Microsoft SQL Server.
Запустите скрипт Install_DVDStore.pl из каталога C:\ds2\. Укажите размер создаваемой тестовой БД.
В ds3 исправлен баг с некорректными символами переноса строк, потому в скрипте следует указать тип сервера: WIN.
Дождитесь завершения создания тестовых файлов.
В каталоге C:\ds3\sqlserverds3\ будет создан конфигурационный файл sqlserverds3_create_all_<размер_БД>.sql. Запустите команду, указав путь к файлу:
osql -Usa -P -i sqlserverds3_create_all_2GB.sql
osql -Usa -P -i sqlserverds3_create_all_2GB.sql
Дождитесь, когда команда завершится.
Перед запуском теста создайте бекап базы или снапшот ВМ для того, чтобы восстановить состояние сервера до начала теста и откатить сделанные изменения.
На этом настройку DVD Store version 3 можно считать завершенной.
Перед запуском теста создайте бекап базы или снапшот ВМ для того, чтобы восстановить состояние сервера до начала теста и откатить сделанные изменения.
На этом настройку DVD Store version 3 можно считать завершенной.
Запуск теста
Тестирование БД осуществляется при помощи утилиты ds2sqlserverdriver.exe, расположенной в папке C:\ds2\sqlserverds2\. Для третьей версии, соответственно, C:\ds3\sqlserverds3\ds3sqlserverdriver.exe.Утилита принимает в качестве параметров различные настройки, с которыми будет запускаться тест. Для простоты настройки могут быть описаны в отдельном тестовом файле. Вот пример настроек, которые могут использоваться для тестирования созданной базы:
target=localhost
n_threads=1
ramp_rate=10
run_time=60
db_size=2GB
warmup_time=10
think_time=0
pct_newcustomers=20
n_searches=3
search_batch_size=5
n_line_items=5
virt_dir=ds2
page_type=php
windows_perf_host=localhost
linux_perf_host=
detailed_view=Y
Сохраните их в текстовом файле DriverConfig.txt в папке C:\ds2\sqlserverds2\. Запустите утилиту из командной строки:
ds2sqlserverdriver.exe --config_file=DriverConfig.txt
Если все настройки были выполнены корректно, то в окне появится метрики, полученные от тестов.