Dockerized JMeter не отправляет запросы Dockerized Microservice - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть небольшой Spring Boot API, работающий в docker. Ниже показана команда, которую я использовал для запуска контейнера.

  docker run -d --rm --name factorialorialContainer --memory=$2 --cpus=$3 -p 8080:8080 -e JAVA_OPTIONS="$(cat /Users/sulekahelmini/Documents/fyp/fyp_work/MLscripts/flags.txt)" suleka96/factorial:latest

Затем у меня есть докернизированный JMeter, который я использовал с помощью приведенной ниже команды

  export volume_path=/Users/sulekahelmini/Documents/fyp/fyp_work/MLscripts/jmeter_resource && export jmeter_path=/jmeter && docker run --rm --name jmeterContainer --memory='512m' --cpus=2 -e JAVA_OPTS="-Xms512 -Xmx512" --volume ${volume_path}:${jmeter_path} egaillardon/jmeter --nongui -t factorial.jmx -l jmeter_results.jtl -q user.properties

, но все тесты не пройдены, и запросы не передаются в API. Вот как выглядит CLI JMeter

enter image description here

тестовая конфигурация запроса:
Протокол: htttp
Сервер: localhost
Порт : 8080
Метод: GET
Путь: / api / factorial

Вот как выглядит полный файл bash:

#!/bin/bash


  cd /Users/sulekahelmini/Documents/fyp/fyp_work/demo/target && docker build . -t suleka96/factorial
  docker run -d --rm --name factorialorialContainer --memory='512m' --cpus=2 -p 8080:8080 -e JAVA_OPTIONS="$(cat /Users/sulekahelmini/Documents/fyp/fyp_work/MLscripts/flags_base.txt)" suleka96/factorial:latest
  sleep 15
  #run test
  export volume_path=/Users/sulekahelmini/Documents/fyp/fyp_work/MLscripts/jmeter_resource && export jmeter_path=/jmeter && docker run --rm --name jmeterContainer --memory='512m' --cpus=2 -e JAVA_OPTS="-Xms512 -Xmx512" --volume ${volume_path}:${jmeter_path} egaillardon/jmeter --nongui -t factorial.jmx -l jmeter_results.jtl -q user.properties
  sleep 15
  #jtl split
  java -jar /Users/sulekahelmini/Documents/fyp/fyp_work/MLscripts/jtl-splitter-0.4.6-SNAPSHOT.jar -f /Users/sulekahelmini/Documents/fyp/fyp_work/MLscripts/jmeter_resource/jmeter_results.jtl -s -t 1;
  docker stop factorialorialContainer
  docker stop jmeterContainer

Что я делаю не так? Как я могу это исправить?

1 Ответ

0 голосов
/ 24 февраля 2020

Ты все делаешь неправильно.

  1. Когда дело доходит до Spring Boot, даже "маленький" API совсем не маленький, если вы хотите что-то действительно маленькое - подумайте, например: Джерси
  2. Я терплю неудачу чтобы понять, зачем вам вообще нужны контейнеры, в вашей ситуации они не добавляют никакого значения, а только потребляют ресурсы
  3. Вы запускаете тестируемое приложение и генератор нагрузки на одной физической машине. Оба могут быть очень ресурсоемкими, когда речь идет о высокой нагрузке, и вы не сможете точно сказать, где находится узкое место
  4. Если вы все еще хотите игнорировать предыдущие 2 пункта и продолжаете: вы ' используется localhost в контейнере JMeter, и порт 8080 в этом контейнере не развернут. Вам нужно выполнить следующую команду:

    docker inspect factorialorialContainer
    

    вы увидите строку, которая выглядит следующим образом:

    "IPAddress": "xxx.xxx.xxx.xxx",
    

    вам нужно будет получить этот IP-адрес из docker проверьте вывод команды и замените localhost на этот IP-адрес в HTTP-запросе JMeter сэмплер

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...