Docker 停靠的JMeter不向停靠的微服务发送请求

Docker 停靠的JMeter不向停靠的微服务发送请求,docker,jmeter,Docker,Jmeter,我在docker中运行了一个小的Spring Boot API。下面显示的是我用来启动容器的命令 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

我在docker中运行了一个小的Spring Boot API。下面显示的是我用来启动容器的命令

  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。这就是JMeter的CLI的外观

请求的测试配置:
协议:htttp
服务器:本地主机
端口:8080
方法:获取
路径:/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
"IPAddress": "xxx.xxx.xxx.xxx",

我做错了什么?我怎样才能解决这个问题?

你做的每件事都是错的

当谈到弹簧靴时,即使是“小”API也不算小,如果你想要一些非常小的东西,考虑一下,即
  • 我不明白为什么您需要容器,在您的情况下,它们不增加任何价值,只消耗资源
  • 您正在同一台物理机器上运行被测应用程序和load generator。当涉及到高负载时,这两者都会占用大量资源,而且您无法确定瓶颈在哪里
  • 如果您仍然想忽略前面的两点并继续:您正在JMeter容器中使用
    localhost
    ,而该容器中的8080端口上没有部署任何内容。您需要运行以下命令:

    docker inspect factorialorialContainer
    
    您将看到一条如下所示的线:

    #!/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
    
    "IPAddress": "xxx.xxx.xxx.xxx",
    
    您需要从命令输出中获取此IP地址,并在JMeter的采样器中用此IP地址替换
    localhost

  • 参考资料: