当前位置: 首页 > 知识库问答 >
问题:

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

慕容文昌
2023-03-14

我有一个小的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。这就是JMeter的CLI的外观

请求的测试配置:
协议: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个答案

郎飞龙
2023-03-14

你做的每件事都是错的。

> 说到Spring靴,即使是“小”的API也不算小,如果你想要一个很小的东西——比如Jersey

  • 我不明白你为什么需要容器,在你的情况下,它们不会增加任何价值,只会消耗资源
  • 您正在同一台物理机器上运行被测应用程序和load generator。在高负载的情况下,两者都会占用大量资源,您无法确定瓶颈在哪里
  • 如果您仍然想忽略前面的两点并继续:您正在JMeter容器中使用localhost,而该容器中的8080端口上没有部署任何内容。您需要运行以下命令:

    docker inspect factorialorialContainer
    

    你会看到一条线,看起来像:

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

    您将需要从docker检查命令输出中获取此IP地址,并在JMeter的HTTP请求采样器中将localhost替换为此IP地址

    参考资料:

    • Docker网络
    • 用Docker进行JMeter分布式测试

  •  类似资料:
    • 我对docker比较陌生。我想建立一个postgres数据库,但我想知道如果我重新创建容器,如何确保数据不会丢失。 然后我偶然发现了命名卷(不是绑定卷)以及如何使用它们。但是...在Dockerfile中,您不能使用命名卷。例如data:/var/lib等。正如我使用Dockerfile所理解的那样,它总是一个匿名卷。所以每次我重新创建一个容器时,它都会得到自己的新卷。 所以我的问题来了: 首先:

    • wxAui是一个包含在wxWidgets API中的高级用户界面库。 Wx.aui.AuiManager是AUI框架中的中心类。 AuiManager使用wx.aui.AuiPanelInfo对象中的每个面板信息管理与特定帧关联的窗格。 让我们了解PanelInfo对象控件对接和浮动行为的各种属性。 将可停靠窗口放在顶层框架中涉及以下步骤 - 首先,创建一个AuiManager对象。 self.m

    • 我使用SpringBoot、SpringCloudNetfix和docker来运行微服务。 在非停靠环境中一切正常,但一旦我停靠了eureka服务器和microservice(例如用户服务),我发现用户服务无法注册到eureka服务器。 我可以通过http://{Ubuntu server}:8761/eureka/访问停靠的eureka服务器,或者通过http://{Ubuntu server}

    • 我有一个小型spring应用程序,如下所示: 我已经生成了这个应用程序的一个jar,并将其停靠,如下所示: 然后运行下面的命令运行docker容器 问题是,当我这样做我得到一个错误说: org.springframework.web.请求方法'GET'不支持 然而,当我在本地运行spring应用程序(不停靠它)并从JMeter发送请求时,请求成功发送。 我做错了什么?

    • 我正在用PySide和Python2.7编写一个程序。 这段代码显示一个工作任务栏图标和一个iconmenu。现在,当我点击“Show Window”时,我想在图标的相同位置加载一个停靠到任务栏的Widget/Windows。 如果我会使用几何学,这将永远不会工作,因为有些人的任务栏在顶部,或在屏幕的侧面。 如何用pyside将窗口/小部件停靠到任务栏? 谢谢。

    • 问题内容: 如何确保我的文件服务可靠且可扩展?它可以处理多少个并行请求? 我正在考虑超出硬件功能和带宽。 我正在关注在JavaServlet中流式传输大文件 问题答案: 如果这些是静态文件,则 直接 链接到它。所有不错的servlet容器/应用服务器都有完善的。如果这些是静态文件,这些静态文件位于您要链接到的Web应用程序 之外 ,那么您也可以仅将这些文件的根文件夹添加为另一个上下文。目前还不清楚