Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Нагрузочное тестирование выделенных серверов (VPS \ VDS \ Dedicated)


Recommended Posts

Топик небольшого совета-помощи для тех, кто озадачился сменой или выбором новой хост-площадки.

Ну, или для теста разного рода твиков\оптимизаций, типа смены 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

Результаты\на что обратить внимание:

Spoiler

sysbench 1.0.17 (using system LuaJIT 2.0.4)

Running the test with following options:
Number of threads: 4
Initializing random number generator from current time


Prime numbers limit: 10000

Initializing worker threads...

Threads started!

CPU speed:
    events per second:  3646.31

General statistics:
    total time:                          60.0015s
    total number of events:              218790

Latency (ms):
         min:                                    1.04
         avg:                                    1.10
         max:                                   53.05
         95th percentile:                        1.23
         sum:                               239736.93

Threads fairness:
    events (avg/stddev):           54697.5000/165.24
    execution time (avg/stddev):   59.9342/0.01

 

 

Тест дисковой подсистемы.

- Подготовим тестовые файлики. В текущей директории будет создана пачка файлов суммарным объемом --file-total-size= Х. Потом за собой удалим. Просто будьте готовы к этому \ вдруг не хватит места

sysbench fileio --file-total-size=4G prepare

Результаты\на что обратить внимание:

Spoiler

]# sysbench fileio --file-total-size=4G prepare
sysbench 1.0.17 (using system LuaJIT 2.0.4)

128 files, 32768Kb each, 4096Mb total
Creating files for the test...
Extra file open flags: (none)
Creating file test_file.0
Creating file test_file.1
.....
Creating file test_file.127
4294967296 bytes written in 18.56 seconds (220.74 MiB/sec).

 

- Тест случайного чтения\записи.

sysbench fileio --file-total-size=4G --file-test-mode=rndrw --time=60 run

Результаты\на что обратить внимание:

Spoiler

# sysbench fileio --file-total-size=4G --file-test-mode=rndrw --time=60 run
sysbench 1.0.17 (using system LuaJIT 2.0.4)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current time


Extra file open flags: (none)
128 files, 32MiB each
4GiB total file size
Block size 16KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...

Threads started!


File operations:
    reads/s:                      2319.52
    writes/s:                     1546.35
    fsyncs/s:                     4950.12

Throughput:
    read, MiB/s:                  36.24
    written, MiB/s:               24.16

General statistics:
    total time:                          60.0092s
    total number of events:              528941

Latency (ms):
         min:                                    0.00
         avg:                                    0.11
         max:                                   46.59
         95th percentile:                        0.42
         sum:                                59500.75

Threads fairness:
    events (avg/stddev):           528941.0000/0.00
    execution time (avg/stddev):   59.5008/0.00

 

 

- удаляем тестовые файлы за собой.

sysbench fileio --file-total-size=4G cleanup

Тест скорости работы ОЗУ

 

sysbench memory run

Результаты\на что обратить внимание:

Spoiler

# sysbench memory run
sysbench 1.0.17 (using system LuaJIT 2.0.4)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current time


Running memory speed test with the following options:
  block size: 1KiB
  total size: 102400MiB
  operation: write
  scope: global

Initializing worker threads...

Threads started!

Total operations: 33531852 (3351462.69 per second)

32745.95 MiB transferred (3272.91 MiB/sec)


General statistics:
    total time:                          10.0010s
    total number of events:              33531852

Latency (ms):
         min:                                    0.00
         avg:                                    0.00
         max:                                   27.41
         95th percentile:                        0.00
         sum:                                 4432.64

Threads fairness:
    events (avg/stddev):           33531852.0000/0.00
    execution time (avg/stddev):   4.4326/0.00

 

 

Тест производительности БД (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

Результаты\на что обратить внимание:

Spoiler

sysbench 1.0.17 (using system LuaJIT 2.0.4)

Running the test with following options:
Number of threads: 4
Initializing random number generator from current time


Initializing worker threads...

Threads started!

SQL statistics:
    queries performed:
        read:                            937370
        write:                           267820
        other:                           133910
        total:                           1339100
    transactions:                        66955  (1115.71 per sec.)
    queries:                             1339100 (22314.14 per sec.)

    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          60.0096s
    total number of events:              66955

Latency (ms):
         min:                                    1.92
         avg:                                    3.58
         max:                                  610.88
         95th percentile:                        5.18
         sum:                               239808.20

Threads fairness:
    events (avg/stddev):           16738.7500/114.91
    execution time (avg/stddev):   59.9521/0.00

    
- удаляем за собой таблички. Можно дропнуть всю тестовую базу.

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 и посмотрите на доступные\дополнительные тесты.

 

Вопрос на финише: кто как тестирует сервера? Делитесь опытом! :)

 

Змінено користувачем 100napb
  • +1 2
Надіслати
Поділитися на інших сайтах

2 minutes ago, destreser said:

ab -c 110 -n 12100 -f TLS1.2 -H "Accept-Encoding: gzip,deflate" *домен*

ab - наше все )) не спорю - полезно. Спасибо!

 

Но это, на мой взгляд, уже на финишных этапах настройки\шлифовки: так как пока не развернешь проект целиком и не сконфигурируешь окружение, то тестировать как бы с помощью АБ и нечего. Во всяком случае, я его использую только что бы а) оценить нагрузку на веб-сервер и БД во время тестирования с большим кол-во конкурентных потоков и запросов б) оценить количество request per sec.

А Вы?

Надіслати
Поділитися на інших сайтах

Ну так главное же - финальный результат :) отдельные циферки бенчей ничего сами по себе не значат, если в итоге клиент ночью звонит и говорит: "чет сайт лагает, главная грузится n секунд, ахтунг".

Я не из тех, кто  будет переходить от проверенного надежного хостера к кому-то неведомому только лишь потому, что тест и/о показал прирост в районе статистической погрешности.

Змінено користувачем destreser
  • +1 1
Надіслати
Поділитися на інших сайтах


34 minutes ago, destreser said:

Ну так главное же - финальный результат

 

40 minutes ago, destreser said:

Я не из тех, кто  будет переходить от проверенного надежного хостера к кому-то неведомому только лишь потому, что тест и/о показал прирост в районе статистической погрешности.

 

Так само-собой. Топик ни чему не призывает :)

Речь лишь о том, что иной раз описание тарифа\услуги не дают необходимой информации, что бы сделать взвешанный и обоснованный выбор. Например, подобрать новую площадку под вырастающий проект, которому текущих мощностей не хватает - тут как раз синтетика и сравнения могут быть полезными еще до получения финального результата, что бы потом внезапно не обнаружить, что на новой площадке не шибко-то и лучше... Во всяком случае, я не умею достоверно "на глазок" определять, без тестов, что вооон на том сервере ресурс\запас производительности будет достаточным под те или иные задачи. Кроме того, даже цифры и синтетические попугаи убеждают большую часть людей намного лучше, чем слова, т.к. какие-никакие, а все-таки пруфы)

Надіслати
Поділитися на інших сайтах

20 минут назад, 100napb сказал:

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

Ну...  Вот давайте разберемся, во что обычно упирается разросшийся проект? В объем ОЗУ, вычислительную мощность процессора и место на диске. И тип этого самого диска, хотя я уже давно не встречал only hdd. Я вот на digitalocean уже много лет размещаюсь, вертикальное масштабирование там просто песня. На любом хостинге можно упороться в горизонтальное масштабирование, запилить балансировку, репликацию и кучу других приколюх. Я считаю, что это более эффективно, чем размениваться "на семечки", тратя время на перебор хостеров и датацентров, но что бы на ядро было не 2.8Гц, а 2.84.

Змінено користувачем destreser
Надіслати
Поділитися на інших сайтах


47 minutes ago, destreser said:

 тратя время на перебор хостеров и датацентров, но что бы на ядро было не 2.8Гц, а 2.84.

я такое могу представить только в кошмарном сне про ужасно занудных евреев =\

 

49 minutes ago, destreser said:

Я вот на digitalocean уже много лет размещаюсь, вертикальное масштабирование там просто песня.

Что тут скажешь... классно!
 

1 hour ago, destreser said:

упороться в горизонтальное масштабирование, запилить балансировку, репликацию и кучу других приколюх. Я считаю, что это более эффективно, чем размениваться "на семечки"

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

Если Вам тема не нужна\не интересна и кажется бессмысленной, то... я для нее места у Вас то же не найду и заинтересовывать не стану. Я же не маркетингом и не продажами занимаюсь ) Вы уж простите, но это не та полемика, в которой мне хотелось бы участвовать.

Надіслати
Поділитися на інших сайтах

Такое лучше в блоге размещать.

https://opencartforum.com/blogs/

Будет проще найти, если кому-то понадобится. На форуме тема просто затеряется со временем.

А поиск тут не очень работает.

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.