【问题标题】:How to deploy Apache-Jmeter-5.1.1 on Pivotal Cloud Foundary如何在 Pivotal Cloud Foundry 上部署 Apache-Jmeter-5.1.1
【发布时间】:2019-09-06 20:07:19
【问题描述】:

我正在尝试部署 Apache-Jmeter(版本 5.1.1),这是 Pivotal Cloud Foundry 上的独立应用程序,但无法

我的 Windows 机器上运行了 Apache-Jmeter(版本 5.1.1)设置,因此我尝试将该目录/文件夹作为应用程序推送到 PCF,但失败并出现以下错误

C:\Program Files\apache-jmeter-5.1.1>cf push apache-jmeter-5.1.1

Pushing from manifest to org dev-testing/ space Dev as user1...
Using manifest file C:\Program Files\apache-jmeter-5.1.1\manifest.yml
Getting app info...

readat C:\Program Files\apache-jmeter-5.1.1\bin\jmeter.bat: negative offset
FAILED

这是我的 manifest.yml 文件的样子:

---
applications:
- name: jmeter-5-1-pcf
  path: bin/jmeter.bat
  memory: 512m
  instances: 1

我应该能够从 Pivotal Cloud Foundry 运行我的 Jmeter 脚本(我的意思是 test.jmx),如果我能看到部署在 Pivotal Cloud Foundry 上的 Apache-Jmeter 的 UI,那就太好了

【问题讨论】:

    标签: jmeter jmeter-plugins cloud-foundry jmeter-5.0 pcfdev


    【解决方案1】:

    好的,先简单回答一下。

    readat C:\Program Files\apache-jmeter-5.1.1\bin\jmeter.bat: 负偏移 失败

    它失败了,因为这是一个 Windows bat 文件,而您正试图在 Linux 上运行它。您可能想要运行 .sh 启动脚本,并确保您正在从 JMeter Binaries page 推送 .tgz 下载。


    除此之外,它会变得模糊不清,并且取决于您到底想运行什么?

    您可以简单地从命令行运行jmeter,例如here。在这种情况下,您没有持久运行的服务器,这会带来问题,因为 Cloud Foundry 期望您的应用程序永远运行。

    您可以改用任务来解决此问题。您需要将 JMeter 作为应用程序推送,让它暂存,然后停止应用程序。之后你可以cf run-task 执行jmeter -n -t plan.jmx ...

    另一种选择是尝试运行JMeter remote,但这不会很好用,因为 JMeter 使用 Java RMI,它不是基于 HTTP 的,因此需要使用 Cloud Foundry TCP 路由,或者大量使用 @ 987654329@做隧道。两者都不是很好的选择。

    我建议使用 cf cli。快速测试,以下对我有用。

    1. 从 JMeter 的网站下载 .tgz 二进制版本。
    2. 添加以下.cfignore 文件。它只是跳过你不需要的东西。

      NOTICE
      LICENSE
      README.md
      docs
      printable_docs
      licenses
      extras
      
    3. 添加文件.profile。这将设置几个环境变量以使 JMeter 工作。

      export JAVA_HOME=.java-buildpack/open_jdk_jre/
      export PATH=$PATH:$JAVA_HOME/bin
      
    4. .jmx 文件放入JMeter 目录。

    5. 然后运行cf push -b java_buildpack -m 1G -c 'sleep 9999' -u process --no-route jmeter-cli
    6. 应用程序应该启动并且什么都不做,立即运行cf stop jmeter-cli。您只需要执行此操作,应用就会分阶段。
    7. 然后运行cf run-task jmeter-cli './bin/jmeter -n -t your-test.jmx'
    8. 运行cf logs --recent jmeter-cli 并查看结果。或者在第二个终端中运行 cf logs jmeter-cli 并在任务运行时流式传输它们。

    示例输出:

       2019-09-08T22:06:35.72-0400 [CELL/0] OUT Cell e5f61515-c164-4c36-9686-faa2a0a363ed creating container for instance 29a1deb6-04c1-4105-91f8-0a8a5dadf367
       2019-09-08T22:06:36.56-0400 [CELL/0] OUT Cell e5f61515-c164-4c36-9686-faa2a0a363ed successfully created container for instance 29a1deb6-04c1-4105-91f8-0a8a5dadf367
       2019-09-08T22:06:41.18-0400 [APP/TASK/4e6e54e6/0] ERR Sep 09, 2019 2:06:41 AM java.util.prefs.FileSystemPreferences$1 run
       2019-09-08T22:06:41.18-0400 [APP/TASK/4e6e54e6/0] ERR INFO: Created user preferences directory.
       2019-09-08T22:06:41.61-0400 [APP/TASK/4e6e54e6/0] OUT Creating summariser <summary>
       2019-09-08T22:06:41.61-0400 [APP/TASK/4e6e54e6/0] OUT Created the tree successfully using Test Google.jmx
       2019-09-08T22:06:41.61-0400 [APP/TASK/4e6e54e6/0] OUT Starting the test @ Mon Sep 09 02:06:41 UTC 2019 (1567994801615)
       2019-09-08T22:06:41.63-0400 [APP/TASK/4e6e54e6/0] OUT Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
       2019-09-08T22:06:43.66-0400 [APP/TASK/4e6e54e6/0] OUT summary =     30 in 00:00:02 =   19.9/s Avg:    99 Min:    60 Max:   450 Err:     0 (0.00%)
       2019-09-08T22:06:43.66-0400 [APP/TASK/4e6e54e6/0] OUT Tidying up ...    @ Mon Sep 09 02:06:43 UTC 2019 (1567994803664)
       2019-09-08T22:06:43.66-0400 [APP/TASK/4e6e54e6/0] OUT ... end of run
       2019-09-08T22:06:44.39-0400 [APP/TASK/4e6e54e6/0] OUT Exit status 0
    

    唯一需要提及的是,您可以使用-l 选项并将输出写入JTL 文件。如果你这样做,它将写入本地文件系统,当你的任务结束时,该文件将消失,你将无法获取它。

    如果您需要将结果写入 JTL 文件,那么您还需要修改运行的任务命令,在 JMeter 完成后,将结果文件上传到 S3 等持久存储中。

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      相关资源
      最近更新 更多