#java #load-testing #apachebench
#java #нагрузочное тестирование #apachebench
Вопрос:
Мне нужно протестировать загрузку или смоделировать 2K подключений к моему веб-приложению, чтобы увидеть, как оно обрабатывает нагрузку и т.д.
Если я запущу apache bench на своем ноутбуке, я предполагаю, что это невозможно имитировать?
Означает ли это, что я должен запускать отдельные виртуальные машины для доступа к производственному серверу, каждая из которых выполняет, возможно, по 200 отдельных подключений?
Буду ли я выполнять 1 запрос x 2K одновременных пользователей?
Или я могу поиграть примерно 500 x 400, чтобы получить те же результаты?
Ответ №1:
Вы должны проверять Bees с помощью пулеметов, он очень настраиваемый и позволяет вам создавать рой экземпляров micro EC2, которые «атакуют» ваш сервер. Это исключительный тест в реальном мире. Вы можете поэкспериментировать с 2000 одновременными запросами, 200 пользователей запрашивают по 10 каждый, 2000 запрашивают по 1 ресурсу каждый и т.д. Вы отлично чувствуете, где находятся узкие места.
Что касается стоимости, то это стоит копейки за экземпляры. Это отличный инструмент. Я знаю много приложений / сайтов с высоким трафиком, использующих его и полагающихся на него.
Ответ №2:
С ab очень легко получить вводящие в заблуждение результаты, если вы действительно не знаете, что делаете.
Если вам нужно имитировать 2000 одновременных подключений, вам нужно одновременно открыть 2000 подключений — вот и все. Если вам нужно имитировать 2000 одновременных ТРАНЗАКЦИЙ, то вам нужно одновременно открыть 2000 подключений, и каждое из этих подключений должно одновременно отправлять запрос. Одна виртуальная машина в облаке может легко открывать 2000 одновременных подключений с Linux или Windows. Сможет ли используемое вами программное обеспечение (например, ab) справиться с этим, будет зависеть от того, насколько оно эффективно.
Однако, если вы действительно спрашиваете: «Мне нужно имитировать 2000 одновременных ПОЛЬЗОВАТЕЛЕЙ», тогда ответ будет другим — поскольку эти пользователи могут или не могут сохранять соединения открытыми, когда они не используются, и большинство соединений большую часть времени будут простаивать.