Нагрузочное тестирование
Материал из ISPWiki
Нагрузочного тестирование BILLmanager
Конфигурация сервера:
- CPU Intel Core2 Quad Q9400
- RAM 8GB
- HDD 2 x Seagate ST3500320NS
Установленное ПО:
- FreeBSD 8.1-RELEASE (amd64)
- MySQL 5.1.54
- BILLmanager-Corporate 4.0.49.7
Настройки MySQL: за основу взят конфигурационный файл MySQL my-huge.cnf
[mysqld] skip-locking key_buffer_size = 384M max_allowed_packet = 1M table_open_cache = 1024 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 8M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size = 128M tmp_table_size = 32M thread_concurrency = 8 #log-bin=mysql-bin innodb_data_home_dir = /var/db/mysql (логи и БД разнесены по разным hdd) innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend innodb_log_group_home_dir = /var/db/mysql-logs innodb_buffer_pool_size = 5GB innodb_log_file_size = 100M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50 innodb_flush_method=O_DIRECT innodb_thread_concurrency=8 [myisamchk] key_buffer_size = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M
Тестирование проводилось в два параллельных потока с двух разных компьютеров.
Шаг №1: Регистрация клиентов
Кол-во Общее время Среднее время Комп. №1 250000 01:49:06 38.19 клиентов/сек. Комп. №2 250000 01:48:58 38.24 клиентов/сек.
Итоговое значение: 76.38 клиентов/сек.
Шаг №2: Зачисление платежа
Зачисление платежа включает в себя:
- выполнение платежа пользователей;
- подтверждение его администратором.
Кол-во Общее время Среднее время Комп. №1 250000 10:05:57 6.89 платежей/сек. Комп. №2 250000 10:06:29 6.87 платежей/сек.
Итоговое значение: 13.74 платежей/сек.
Шаг №3: Заказ услуги
Заказ услуги производился на тарифном плане с ручной обработкой вследствие чего включает в себя:
- заказ услуги пользователем;
- обработка её администратором.
Кол-во Общее время Среднее время Комп. №1 250000 39:11:18 1.77 услуг/сек. Комп. №2 250000 39:11:48 1.77 услуг/сек.
Итоговое значение: 3.54 услуг/сек.
Шаг №4: Создание тикета
Данный шаг включает:
- создание тикета клиентов;
- ответ на него администратором.
Кол-во Общее время Среднее время Комп. №1 250000 06:03:15 11.47 тикетов/сек. Комп. №2 250000 06:04:57 11.41 тикетов/сек.
Итоговое значение: 22.83 тикетов/сек.
Шаг №5: Повторное зачисление платежа
Кол-во Общее время Среднее время Комп. №1 250000 09:58:55 6.95 платежей/сек. Комп. №2 250000 10:02:12 6.91 платежей/сек.
Итоговое значение: 13.83 платежей/сек. Изменение производительности относительно шага №2: +0,65%.
Шаг №6: Автопродление услуг (ежедневный биллинг)
Автопродление выполнялось запуском команды "/usr/local/ispmgr/sbin/billmaintain billdaily" на тестируемом сервере которая для каждой заказанной услуги выполняла продление и списание денежных средств.
Кол-во Общее время Среднее время Сервер 500000 00:58:36 142.17 продлений/сек.
Итоговое значение: 142.17 продлений/сек.
Шаг №7: Регистрация дополнительных клиентов
Кол-во Общее время Среднее время Комп. №1 25000 00:10:35 39.37 клиентов/сек. Комп. №2 25000 00:10:28 39.81 клиентов/сек.
Итоговое значение: 78.74 клиентов/сек. Изменение производительности относительно шага №1: +3,09%.
Шаг №8: Зачисление платежа для дополнительных клиентов
Кол-во Общее время Среднее время Комп. №1 25000 01:10:58 5.87 платежей/сек. Комп. №2 25000 01:11:00 5.86 платежей/сек.
Итоговое значение: 11.73 платежей/сек. Изменение производительности относительно шага №2: -14.62%.
Шаг №9: Заказ услуги для дополнительных клиентов
Кол-во Общее время Среднее время Комп. №1 25000 05:22:05 1.30 услуг/сек. Комп. №2 25000 05:06:15 1.36 услуг/сек.
Итоговое значение: 2.59 услуг/сек. Изменение производительности относительно шага №3: -26.83%.
Шаг №10: Генерирование актов выполненных работ
Генерирование актов производилось на сервере одной командой для всех клиентов
Кол-во Общее время Среднее время Сервер 550000 02:51:25 53.47 актов/сек.
Итоговое значение: 53.47 актов/сек.
Выводы
В результате тестирования было создано 550 тысяч клиентов и для каждого из них произведены основные операции с которыми встречается пользователь (оплата, заказ и продление услуги, создание тикета). Суммарное время проведение теста составило около 3,5 суток. По завершению всех операций размер базы данных биллинга составил порядка 5 ГБ. Следует отметить что тестирование производилось на рядовом сервере и существует потенциал роста в плане повышения производительности самого сервера. В первую очередь это дисковая подсистема и размер ОЗУ в совокупности с тюнингом настроек MySQL на оптимальное их использование. Кроме того возможно вынесение MySQL сервера на отдельный сервер.
