Проект «SnakeProject» Михаила КозловаРегистрация

Навигация
⇒FreeBSD and Nix⇒

⇐CISCO
⇐Voice(Asterisk\Cisco)
⇐Microsoft
⇐Powershell
⇐Python
⇐SQL\T-SQL
⇐1С
⇐Общая
⇐WEB Разработка
⇐ORACLE SQL \ JAVA

Тестирование нагрузки (веб-сервер, ОС, MySQL)


 

Тестирование нагрузки на веб-сервер


http_load


Порт в FreeBSD:
https://www.freshports.org/www/http_load/

Варианты установки:
cd /usr/ports/www/http_load/ && make install clean
pkg install http_load


Создаем файл, с интересующими нас урлами urls.txt:
http://your_site.com/;
http://your_site.com/staatic/;
http://your_site.com/rubric/;

 

С максимально возможной скоростью извлечь страницы из файла:
http_load -parallel 1 -seconds 60 urls.txt


Имитируем дополнительно 10 обращающихся:
http_load -parallel 10 -seconds 60 urls.txt


Симуляция нагрузки прогнозируемой частоты запросов, пример 10  раз в секунду:
http_load -rate 10 -seconds 60 urls.txt

 


Тестирование нагрузки на ОС


sysbench


Порт в FreeBSD:
https://www.freshports.org/benchmarks/sysbench/

Варианты установки:
cd /usr/ports/benchmarks/sysbench && make install clean
pkg install sysbench


CentOS/RHEL:
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
yum -y install sysbench

Ubuntu:
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash
apt -y install sysbench

Fedora:
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
dnf -y install sysbench


Опции:
--num-threads="N" - количество потоков
--max-requests="N" - количество общих запросов
--test="testname" - имя теста


Тест процессора:
sysbench --test=cpu --cpu-max-prime=10000 run


Тест памяти:
sysbench --test=memory run


Тест io (Создаст файлы в текущем каталоге):
sysbench --num-threads=4 --test=fileio --file-total-size=30G --file-test-mode=rndrw prepare


Параметры теста:
seqwr — последовательная запись
seqrd — последовательное чтение
seqrewr — последовательная перезапись
rndrd — произвольное чтение
rndwr — произвольная запись
rndrw — произвольное чтение и произвольная запись


Тест ввода-вывода с произвольными чтением-записью:
sysbench --num-threads=4 --test=fileio --file-total-size=30G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run

...
Read XXXMb Written XXXMb Total transferred XXXGb (4.2958Mb/sec)
223.67 Requests/sec executed
...
Интересно из вывода:
Количество запросов в секунду и общая пропускная способность - в данном случае 223,67 запроса в секунду и 3,4948 Мбайт/с


Очистка после тестирования:
sysbench --test=fileio --file-total-size=30G cleanup

 


Тестирование OLTP нагрузки MySQL


Создаем тестовую базу:
create database testbase;


Подготовим нашу базу для тестирования:
sysbench --num-threads=4 --test=oltp --mysql-db=testbase --mysql-user=root --mysql-password=pass --oltp-table-size=25000 --db-driver=mysql --mysql-table-engine=myisam prepare


Запускаем тест:
sysbench --num-threads=4 --test=oltp --mysql-db=testbase --mysql-user=root --mysql-password=pass --oltp-table-size=25000 --db-driver=mysql --mysql-table-engine=myisam run


Очистка после тестирования:
sysbench --test=oltp --mysql-user=root --mysql-password=pass --db-driver=mysql cleanup


Узнать вообще характеристики таблицы можно так, пример вывода:
describe yourtable;
+--------------+-----------------------------------+------+-----+---------------------+----------------+
| Field        | Type                              | Null | Key | Default             | Extra          |
+--------------+-----------------------------------+------+-----+---------------------+----------------+
| id           | int(10) unsigned                  | NO   | PRI | NULL                | auto_increment |
| title        | text                              | YES  |     | NULL                |                |
| link         | varchar(255)                      | NO   |     |                     |                |
| pubDate      | date                              | YES  |     | 0000-00-00          |                |
| date_edit    | datetime                          | YES  |     | 0000-00-00 00:00:00 |                |
+--------------+-----------------------------------+------+-----+---------------------+----------------+
15 rows in set (0.00 sec)


show table status like 'yourtable' \G
*************************** 1. row ***************************
           Name: yourtable
         Engine: MyISAM
        Version: 10
     Row_format: Dynamic
           Rows: 25766
 Avg_row_length: 1621
    Data_length: 41773788
Max_data_length: 281474976710655
   Index_length: 1116160
      Data_free: 0
 Auto_increment: 55218
    Create_time: 2017-09-15 10:36:34
    Update_time: 2018-10-05 15:20:56
     Check_time: 2017-09-15 10:36:35
      Collation: cp1251_general_ci
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.00 sec)


Профилирование можно сделать так:
set profiling=1;
select count(*) from yourtable;
select * from yourtable where id = 14;


Посмотрим на время исполнения запросов:
show profiles;
+----------+------------+---------------------------------------+
| Query_ID | Duration   | Query                                 |
+----------+------------+---------------------------------------+
|        1 | 0.00013510 | select count(*) from yourtable        |
|        2 | 0.00013222 | select * from yourtable where id = 14 |
+----------+------------+---------------------------------------+


Посмотрим информацию по определенному запросу:
show profile for query 2;
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000064 |
| checking permissions | 0.000008 |
| Opening tables       | 0.000021 |
| After opening tables | 0.000006 |
| System lock          | 0.000007 |
| Table lock           | 0.000008 |
| init                 | 0.000043 |
| optimizing           | 0.000012 |
| statistics           | 0.000022 |
| preparing            | 0.000017 |
| executing            | 0.000005 |
| Sending data         | 0.000067 |
| end                  | 0.000007 |
| query end            | 0.000006 |
| closing tables       | 0.000005 |
| Unlocking tables     | 0.000009 |
| freeing items        | 0.000021 |
| updating status      | 0.000014 |
| cleaning up          | 0.000005 |
+----------------------+----------+


По дефолту профилируется 15 запросов, увеличить так можно:
set profiling_history_size=100;

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

© Snakeproject.ru создан в 2013 году. При копировании материала с сайта - оставьте ссылку.


Яндекс.Метрика

Goon Каталог сайтов Рейтинг@Mail.ru