如何在Pivotal Cloud Foundary上部署Apache-Jeter-5.1.1



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

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

C:Program Filesapache-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 Filesapache-jmeter-5.1.1manifest.yml
Getting app info...
readat C:Program Filesapache-jmeter-5.1.1binjmeter.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 CloudFoundry 上的Apache Jmeter的UI,那就太好了

好的,先简单回答。

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

它失败了,因为那是一个Windows蝙蝠文件,而您正试图在Linux上运行它。您可能希望运行.sh启动脚本,并确保从JMeter Binaries页面推送.tgz下载。


除此之外,它会变得模糊,这取决于你到底想运行什么?

您可以简单地从命令行运行jmeter,就像这里一样。在这种情况下,你没有一个持续运行的服务器,这带来了一个问题,因为Cloud Foundry希望你的应用程序永远运行。

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

另一种选择是尝试远程运行JMeter,但这不会很好地工作,因为JMeter使用Java RMI,它不是基于HTTP的,因此需要使用Cloud Foundry TCP路由,或者大量使用cf ssh来创建隧道。两者都不是很好的选择。

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

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

    NOTICE
    LICENSE
    README.md
    docs
    printable_docs
    licenses
    extras
    
  3. 添加文件.profile。这将设置几个env变量以使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这样的持久存储中。

希望能有所帮助!

最新更新