28 июля на я.субботнике был представлен новый инструмент для нагрузочного тестирования Яндекс.танк. Это внутреняя разработка яндекса, которая наконец-то вышла в свет. Видел я этот танк ещё на YaC 2011, когда были соревнования по конфигурированию nginx.
Это консольный инструмент, пока не имеющий графического интерфейса, но дающий довольно полную картину в этой самой консоли.
Вот сам интерфейс:

Сам проект и документация находится на github’е: https://github.com/yandex-load/yandex-tank
В кратце обрисую возможности:
Можно нагружать одну страницу или сразу список урлов (которые будут запрашиваться примерно в одинаковых соотношениях).
А можно самому составить список запросов со своими заголовками. Например, можно реализовать нагрузку от запросов от анонимных пользователей и залогиненных. Через скрипт (php, python, bash, etc) залогиниться на сайте и получить нужные куки. Сгенерировать в нужном формате данные для танка и запустить тест.
Танк позволяет создать 3 вида нагрузки:
- Постоянная – указывается количество запросов и время
- Линейный рост – указывается начальное и конечное значение и время
- Рост шагами – указывается начальное и конечное значение, шаг увеличения нагрузки и время.
Причём эти виды нагрузки можно комбинировать в одном тесте.
Особенно хочеться отметить простоту и понятность синтаксиса.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Вот что случается, когда сервер не справляется:

Думаю, что проект со временем будет обрастаться графическими интерфейсами, разработанными самим яндексом или сообществом.
Я даже уже придумал, что можно сделать. Получать статистику на нагружаемом сервере через vmstat и выводить красивые графики для быстрого нахождения наиболее узкого места: память, cpu, io.