Топик небольшого совета-помощи для тех, кто озадачился сменой или выбором новой хост-площадки.
Ну, или для теста разного рода твиков\оптимизаций, типа смены io scheduler'a или конфигурации БД.
Зачем это надо? Что бы сколько-нибудь предметно и на цифрах оценить производительность. А не ориентироваться только лишь на отзывы\советы тех или иных серверов\тарифов. Как грится, лучше один раз затестить...
Ограничения \ системные требования? У Вас должен быть доступ по ssh к выделенному серверу. Виртуальный хостинг едва ли подойдет.
О чем будут примеры ниже? О том, как установить на сервер утилиту sysbench и провести ряд базовых тестов
Как оценивать результаты? Только сравнением между собой. До и после. На том сервере и на этом. Строго при одинаковых параметрах запускаемого теста. Результаты sysbench'a зависят от множества факторов и их не стоит измерять одной и той же линейкой
Погнали.
Установка.
для примера пусть будет дистрибутивы rhel \ centos. На текущий момент это версия sysbench-1.0.17-2
yum install sysbench
Тест CPU.
Вычисляем простые числа с ограничением в cpu-max-prime в 1, 4 или 16 потоков. Запускать на выбор или по очереди.
sysbench cpu --cpu-max-prime=10000 --threads=1 --time=60 run
sysbench cpu --cpu-max-prime=10000 --threads=4 --time=60 run
sysbench cpu --cpu-max-prime=10000 --threads=16 --time=60 run
Результаты\на что обратить внимание:
Тест дисковой подсистемы.
- Подготовим тестовые файлики. В текущей директории будет создана пачка файлов суммарным объемом --file-total-size= Х. Потом за собой удалим. Просто будьте готовы к этому \ вдруг не хватит места
sysbench fileio --file-total-size=4G prepare
Результаты\на что обратить внимание:
- Тест случайного чтения\записи.
sysbench fileio --file-total-size=4G --file-test-mode=rndrw --time=60 run
Результаты\на что обратить внимание:
- удаляем тестовые файлы за собой.
sysbench fileio --file-total-size=4G cleanup
Тест скорости работы ОЗУ
sysbench memory run
Результаты\на что обратить внимание:
Тест производительности БД (OLTP)
Важно сделать оговорку, что результаты одних и тех же тестов могут значительно отличаться не только на разном окружении\железе, но и, прежде всего, при различных конфигурациях сервера БД, его версии и движка таблиц. Впрочем, иной раз интересно посмотреть на разницу в результатах MariaDB vs MySQL или при тех или иных параметрах конфигурации. Просто учтите это.
- для начала создадим отдельную базу для тестов с помощью PhpMyAdmin, консоли или что кому удобнее. Я назову базу test и в примерах ниже буду использовать это имя.
- подготовим таблички для проведения тестов. Укажем движок (в примерах будет innodb), а так же кол-во строк в таблицах - 1млн. В параметрах --mysql-user=user --mysql-password='password' используйте свои значения
sysbench --db-driver=mysql --mysql-user=user --mysql-password='password' --mysql-db=test --mysql_storage_engine=innodb --table_size=1000000 --tables=4 --threads=4 /usr/share/sysbench/oltp_read_write.lua prepare
- собственно тест. имеет смысл погонять в разное кол-во потоков. В процессе теста выполняется набор транзакций \ разнообразных запросов: с интервалами, группировками, агрегатными функциями и прочее. Все это, при желании можно настроить, запустив тест с параметром help вместо run и подсмотрев нужные ключики.
sysbench --db-driver=mysql --mysql-user=user --mysql-password='password' --mysql-db=test --mysql_storage_engine=innodb --table_size=1000000 --tables=4 --threads=1 --time=60 /usr/share/sysbench/oltp_read_write.lua run
Результаты\на что обратить внимание:
- удаляем за собой таблички. Можно дропнуть всю тестовую базу.
sysbench --db-driver=mysql --mysql-user=user --mysql-password='password' --mysql-db=test --tables=4 /usr/share/sysbench/oltp_read_write.lua cleanup
Для самых любопытных
https://github.com/akopytov/sysbench
загляните после после установки в папку /usr/share/sysbench и посмотрите на доступные\дополнительные тесты.
Вопрос на финише: кто как тестирует сервера? Делитесь опытом!