Какой инструмент вы использовали для создания нагрузочных скриптов?

Ответ

Для нагрузочного тестирования использовал несколько инструментов, выбор зависит от задачи:

  1. Apache JMeter:

    • Плюсы: Мощный GUI, богатый набор протоколов (HTTP, JDBC, JMS, etc.), поддержка записи сценариев.
    • Минусы: Может потреблять много памяти при высоких нагрузках.
    • Идеален для: Комплексных тестов, где нужен GUI и разнообразие протоколов.
  2. Gatling:

    • Плюсы: Высокая производительность, сценарии пишутся на Scala (код легко версионировать), детальные HTML-отчеты.
    • Минусы: Требует знания Scala (или использования Recorder).
    • Идеален для: Высоконагруженных тестов, CI/CD-пайплайнов.
      // Пример сценария Gatling
      val scn = scenario("BasicSimulation")
      .exec(http("request_1").get("/"))
      .pause(5)
      setUp(scn.inject(atOnceUsers(100))).protocols(httpConf)
  3. Locust:

    • Плюсы: Сценарии на Python (простота), распределенная нагрузка из коробки.
    • Минусы: Меньше встроенных функций, чем у JMeter.
    • Идеален для: Быстрого написания кастомных сценариев разработчиками на Python.

Вывод: Для CI/CD и максимальной производительности выбираю Gatling. Для разовых или сложных многоуровневых тестов — JMeter.

Ответ 18+ 🔞

Да ты посмотри, какие у нас инструменты для того, чтобы сервис до ручки довести! Прямо как в оружейной, блядь, — выбирай, чем ебашить будешь.

Ну, во-первых, этот Apache JMeter, старый добрый монстр. У него, сука, интерфейс такой, что разберётся даже мартышлюшка с бананом. Записывает всё, что в браузере делаешь, и потом это как попугай повторяет тысячу раз. HTTP, базы данных, очереди — поддерживает овердохуища протоколов. Но есть нюанс, ёпта: когда ты ему скажешь «давай десять тысяч пользователей», он может сожрать всю оперативку и лечь, как сапожник. Идеален, если тебе надо не просто ткнуть кнопку, а построить целую ебучую оперу из запросов.

А вот Gatling — это уже другой коленкор. Тут, блядь, никаких тебе кнопок, только код на Scala. Выглядит страшновато, но зато производительность — хуй с горы, просто летит. И отчёты после него такие красивые, в HTML, что начальству можно показывать без стыда. В CI/CD его встроить — одно удовольствие, он как тихий, но ебашистый работяга.

// Смотри, как просто, блядь
val scn = scenario("BasicSimulation")
  .exec(http("request_1").get("/")) // Пошёл один запрос
  .pause(5) // Поспал пять секунд
setUp(scn.inject(atOnceUsers(100))).protocols(httpConf) // И БАЦ — сто юзеров разом!

И третий красавец — Locust. Всё на Питоне, блядь. Если ты хоть раз print("Hello world") писал, то и сценарий накодишь. Распределённую нагрузку из коробки делает — можно с кучи машин долбить. Правда, навороченных фич в нём поменьше, но для быстрого кастомного сценария — просто находка, ёпта.

Так что вывод, блядь, простой: Если тебе надо на скорую руку что-то проверить или такой сложный сценарий, что сам черт ногу сломит — бери JMeter. А если ты, сука, серьёзный пацан и тебе надо всё автоматизировать, в пайплайн встроить и гонять так, чтобы сервера плакали, — твой выбор Gatling. Ну а Locust — это когда «ой, всё» и хочется на чём-то простом и понятном написать свой маленький ад.