Колхозное нагрузочное тестирование
Дано:
Приложение (на golang,в данном случае, но не суть важно).
Нужно:
Протестировать его под нагрузой. В частности, время ответа.
Простой способ, как протестировать приложение и получить график результата, без заморочек с graphite и ему подобных:
Идем на xively.com (бывший cosm) и регистрируем там девайс и канал.
Запускаем наше приложение на локале.
Пример скрипта проверки приложения и отсылки результата в xively:
#!/bin/bash # file testing.sh TIME=`curl -s -w "#"%{time_total} -XPOST -H 'Content-type: application/json' -d"{\"session_id\":\"sess\", \"chan\":\"channel\"}" http://localhost:8000/api/v1/get_data | cut -d'#' -f2` VALUE=`echo "$TIME*1000" | bc` POSTDATA="{\"version\":\"1.0.0\", \"datastreams\" : [{\"id\" : \"ch\", \"current_value\" : \"$VALUE\"}]}" echo $POSTDATA curl -XPUT -H 'X-ApiKey: DSFewrwewWEDVdfsdfsfdsf' -d"$POSTDATA" https://api.xively.com/v2/feeds/24234342
и запускаем это:
watch -n 1 ./testing.sh
Идем на сайт xively и смотрим на наш график.
Добавляем нагрузку:
#!/bin/bash #file run_ab.sh ab -T POST -c20 -n20 -p ab.txt http://localhost:8000/api/v1/get_data
Тут, думаю, все понятно. Утилита apache ab tester из пакета apache-utils, файл с post-данными и параметры.
Запскаем нагрузку:
watch -n 1 ./run_ab.sh
Вуаля.
Получаем какой-то более-менее, правдивый график, типа такого: