使用64位指令从命令行调用jMeter会丢失类。

3

我们之前使用的是32位JDK和jMeter 2.6版本,在模拟一小时内8000个用户时,我们遇到了堆内存问题。

我们升级为64位Java和jMeter 2.12版本。

Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

当我们从命令行请求4Gb堆空间时(服务器有32Gb),我们收到了初始化堆大小过大的消息。
set JVM_ARGS="-Xms4G -Xmx4G -XX:NewSize=512m -XX:MaxNewSize=1G" jmeter.sh

当我们在JVM_ARGS中添加-d64选项时,就不再会收到关于堆大小的错误,但是它不再能找到该类。
set JVM_ARGS="-d64 -Xms4G -Xmx4G -XX:NewSize=512m -XX:MaxNewSize=1G" jmeter.sh

将其指向该目录似乎没有任何效果。
set JVM_ARGS="-d64 -Xms4G -Xmx4G -XX:NewSize=512m -XX:MaxNewSize=1G -cp mypath" jmeter.sh
1个回答

3
  1. Looking into jmeter.sh it seems you're trying to run JMeter on Linux or MacOSX. I believe you need to remove set word (or replace it with export)
  2. Given you have correct java executable in PATH providing -d64 option shouldn't be required. Something like:

     JAVA_HOME=/path/to/64-bit/jdk && export JAVA_HOME
     PATH=$JAVA_HOME/bin:$PATH && export PATH
    
  3. You can edit jmeter script and amend the following lines:

    HEAP="-Xms512m -Xmx512m"
    NEW="-XX:NewSize=128m -XX:MaxNewSize=128m"
    

    "Telling" Jmeter to use Concurrent Mark Sweep (CMS) Garbage Collector can also improve JMeter-side performance greatly. The relevant line is:

    -XX:+UseConcMarkSweepGC
    
请查看《JMeter负载测试“内存不足”失败的9种简单解决方案》文章,以获取有关如何充分利用您的JMeter安装的更多信息。

实际上它正在运行在Windows Server 8.1上。 - JAyenGreen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接