Как провести load test на загрузку файлов с сервера?
День добрый!
Вопрос следующего характера:
1. Есть сервер
2. На нем есть довольно большой файл (400 мб)
3. Нужно проверить, как будет вести себя сервер, если с него начинают разом сливать 50-150 человек.
Есть ли какие-то специальные сервисы для проверки нагрузки?
Кто вообще сталкивался с такими проблемами и как их решал?
Вариант запуска «ab -n» — не совсем подходит, так как не позволяет полностью эмулировать разных пользователей. В моем понимании, идеально для таких целей подходит мини ботнет на 50 машин, но боюсь такая форма теста немного не легальна, поэтому нахожусь в поисках других способов.
А если на сервере повесить скрипт, который выдает тот же файл на скачку, но с разными именами (рандомный набор альфанумерик), и натравить ab с конкурентными запросами.
Могу ошибаться, но в этом случае кеш у провайдера не будет играть роли.
Чтобы скачать файл с разными именами достаточно дописать к имени знак вопроса и любые символы после него. Еще раз: не используйте скрипты для отдачи статики, отдавайте с диска.
Хмм… Ваше замечание разумно, не спорю. Предполагаю, что можно использовать rewrite rules в .htaccess (если у вопрошающего Apache) либо конфигах Nginx (опять-таки, если у автора он фронт-эндом).
Я прав? :)
Почему спрашиваю: я несколько отдалился от подобных вещей, потому при случае вспоминаю, что забыл. Ну, и автору вопроса будет полезно почитать.
Зачем вы хотите использовать .htaccess и конфигах Nginx, если все что нужно, чтобы исключить кеш — добавить get-параметр. „index.html?1“ и „index.html?2“ — уже достаточно.
-c concurrency
Number of multiple requests to perform at a time. Default is one request at a time. -n requests
Number of requests to perform for the benchmarking session. The default is to just perform a single request which usually leads to non-representative benchmarking results.
Такой вариант рассматривался, но по прежнему предположение, что оно не самое правдивое тестирование будет. Сервер, все равно закеширует у себя часть информации и раздача будет уже не от нас, а с провайдера.
В любом случае идеального теста не будет: есть медленные клиенты, есть акселераторы и есть обчные однопоточники с хорошим каналом. Для понимания общей тенденции поведения сервера этого должно хватить.
А что не так с этим файлом, что вам нужно тестировать его загрузку? В определении скорости скачивания вам поможет математика (скорость канала / число одновременных пользователей). В определении скорости канала — какой-нибудь бенчмарк сети. В определении поведении системы поможет только одно правило — не нанимай на это дело идиотов не используйте apache и отдавайте с диска, а не скриптом. Вроде все.