2014-10-09 75 views
0

所以我需要与几千长的轮询请求挂钩系统。Jmeter对newb的问题

我创建了一个具有所需数量请求的线程组。有几件事让我困惑。

(IM在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.

  • 我试图运行我的测试无头,并没有得到更好的;它会在停止之前通过大约2k个请求。我希望有大约40-50k的线程(即请求)。我无法重用线程(我知道)作为这个长轮询,所以请求阻塞,直到导致它们释放。
  • 有什么建议吗?提前Thanx。

    回答

    1

    这没有意义。你不需要运行jmeter-server,除非你需要在服务器模式下运行meter,比如远程引擎。

    根据您正在运行的你很可能超过可通过JMeter的使用的JVM的内存空间的Java版本。不知道你为什么分配4 GB。你应该罚款512M或1024M。我发现无论如何,Jmeter可能会随时间泄漏。

    你的无头测试应该给你一个提示,表明你要么用Jmeter运行内存不足或者线程空间不足,更可能是你的服务器负担过重,可能会耗尽线程池。

    我会做的第一件事是改变存储的东西更保守,说-Xms1024m -Xmx1024m。另外,40-50k的请求不是40-50k线程。它们是彼此合作的概念,但不一定是相同的东西。所以也许你在Jmeter中设置了一些注定要通过创建太多并发线程而失败的东西。

    +0

    我听到你的声音。我在Mac上,从来没有安装;我从解压缩下载直接运行 - 可以吗?我在失败后才升级内存 - 我马上得到内存不足错误*。另外,为什么当我尝试从没有运行服务器的GUI运行时立即出错?最后,即时通讯测试长轮询,所以请求不会返回,直到我做了一些事情导致他们 - 所以我认为它需要1请求/线程(但可能是错误的) – hvgotcodes 2014-10-09 13:16:23

    +0

    嗨。我建议使用像Homebrew这样的东西在Mac上安装电表。我使用Homebrew为他们有一个包的东西。然后它是一个简单的brew安装计量器命令。 Jmeter脚本在启动时从本地查找应用程序的响应。因此,如果您的应用程序在端口8080上运行,它将看起来像http:// localhost:8080/myApp。本地主机相当于127.0.0.1这是您的机器的环回地址;一个虚拟界面。 至于您需要在测试中模拟此长轮询,请在线程组中添加延迟以模拟您的响应。 – TechTrip 2014-10-09 17:02:35

    +0

    要关注我的最新评论,请确保您的应用在本地主机上运行,​​并且您没有任何与HTTP请求默认设置相冲突的HTTP请求设置(如果使用的话)。 – TechTrip 2014-10-09 17:17:46