【问题标题】:Jmeter questions for newb针对newb的Jmeter问题
【发布时间】:2014-10-09 01:51:16
【问题描述】:

所以我需要绑定一个包含数千个长轮询请求的系统。

我创建了一个具有必要数量请求的线程组。有几件事让我感到困惑。

(我在 Mac 上)

  1. 我运行 jmeter.sh 脚本来启动 gui。除非我运行 jmeter-server,否则我无法运行测试。没有它,我会收到“无法连接到 127.0.0.1 ...”消息。文档没有提到需要启动这个脚本。

  2. 在 jmeter.sh 脚本中,我将最大内存设置为 export JVM_ARGS="-Xms4096m -Xmx4096m"。尽管如此,每当我开始运行测试时,我立即看到

Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread. See log file for details.

  1. 我尝试无头运行测试,但没有好转;它在停止之前通过大约 2k 个请求。我希望大约有 40-50k 个线程(即请求)。我不能重用线程(我知道的)作为这个长轮询,所以请求会阻塞,直到某些东西导致它们释放。

有什么建议吗?提前谢谢。

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    这没有意义。除非您需要在服务器模式下运行仪表,例如使用远程引擎,否则您不需要运行 jmeter-server。

    根据您运行的 java 版本,您可能会超出 jmeter 使用的 JVM 可用的内存空间。不确定为什么要分配 4 GB。 512M 或者 1024M 应该没问题。我发现 Jmeter 无论如何都会随着时间的推移而泄漏。

    您的无头测试应该告诉您,您使用 Jmeter 的内存或线程空间不足,或者更有可能是您的服务器负担过重,可能耗尽了线程池。

    我要做的第一件事是将内存更改为更保守的东西,例如 -Xms1024m -Xmx1024m。此外,40-50k 请求不是 40-50k 线程。它们是相互配合但不一定相同的概念。所以也许你在 Jmeter 中设置了一些注定会因为创建太多并发线程而失败的东西。

    【讨论】:

    • 我听到了。我在 Mac 上,从未安装过;我直接从解压缩的下载中运行——可以吗?我只是在它失败后才增加内存——我得到内存不足错误立即。另外,为什么当我尝试在没有服务器运行的情况下从 GUI 运行时它会立即出错?最后,我正在测试长轮询,所以请求不会返回,直到我也做了一些事情来导致它们——所以我认为它需要是 1 个请求/线程(但可能是错误的)
    • 嗨。我建议使用 Homebrew 之类的东西在 Mac 上安装仪表。我将 Homebrew 用于他们有软件包的所有内容。然后是一个简单的 brew install Meter 命令。 Jmeter 脚本在启动时在本地寻找来自您的应用程序的响应。因此,如果您的应用程序在端口 8080 上运行,它将看起来类似于 localhost:8080/myApp。 localhost 等于 127.0.0.1,这是您机器的环回地址;一个虚拟接口。至于你需要在测试中模拟这个的长轮询,在模拟你的响应的线程组中添加一个延迟。
    • 要遵循我的最后一条评论,请确保您的应用程序在 localhost 上运行,并且您没有任何与您的 http 请求默认值相矛盾的 HTTP 请求设置(如果您使用它们)。
    • 另外,我应该提到其他观看此线程的人所推荐的线程相当于一个用户,即 1 个线程 = 1 个用户,但 1 个用户可以创建“n”个请求。这是一个重要的概念。您必须确定您的用例是否需要这种模型并相应地更改您的测试,因为它会影响资源使用。
    • 糟糕的意思是:brew install jmeter
    猜你喜欢
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    相关资源
    最近更新 更多