gpt4 book ai didi

linux - 我的自定义 JMeter 监听器无法在 Linux 中工作

转载 作者:太空宇宙 更新时间:2023-11-04 03:35:12 25 4
gpt4 key购买 nike

我想将sampleResult的信息保存到MySQL中。所以我编写了自己的监听器,名为 Performance Logger。它在我的 Windows 上运行良好。但是当我将相同的 JMeter 脚本移至 Linux 时,它失败了。以下是一些关于我的自定义监听器的代码。

LoggerVisualizer.class

public class LoggerVisualizer extends AbstractVisualizer {
private PerformanceResultCollector collector;
public LoggerVisualizer() {
super();
initConfiguration();
}
private void initConfiguration() {
// some code
}
@Override
public void clearData() {
//some codes

}
public String getStaticLabel() {
return "Performance Logger";
}

public String getLabelResource(){
return "Performance Logger";
}

@Override
public void add(SampleResult sampleResult) {

}

public TestElement createTestElement() {
if (collector == null) {
collector = new PerformanceResultCollector();
}
modifyTestElement(collector);
return collector;
}
}

PerformanceResultCollector.class

public class PerformanceResultCollector extends ResultCollector implements Serializable {    
CustomCollector collector;

public PerformanceResultCollector() {
log.info("construct performance collector")
collector = new CustomCollector();

}
@Override
public void sampleOccurred(SampleEvent e) {
collector.addSample(e.getResult());
}

public void cleanUp(){
CustomCollector.cleanUp();
}
}

在我的 Windows 服务器上,我添加了监听器并且运行良好。我可以看到MySQL服务器中的数据。但是当我将脚本移动到 Linux 并使用命令运行它时

  nohup ./jmeter -n -t /opt/tests/test.jmx -l /opt/log/perf_result.csv -Jjmeter.save.saveservice.output_format=csv -Jjmeter.save.saveservice.hostname=true -Jjmeter.save.saveservice.print_field_names=false -Jjmeter.save.saveservice.url=true -Jjmeter.save.saveservice.thread_counts=true -Jjmeter.save.saveservice.timestamp_format="yyyy-MM-dd HH:mm:ss" > /opt/log/jmeter_script_run.out 2> /opt/log/jmeter_script_run.err < /dev/null

我在 jmeter.log 中收到如下错误:

2015/08/08 04:36:28 INFO  - com.test.jmeter.logger.PerformanceResultCollector: construct performance collector
2015/08/08 04:36:28 ERROR - jmeter.save.SaveService: Conversion error com.thoughtworks.xstream.converters.ConversionException: java.lang.NullPointerException : java.lang.NullPointerException
---- Debugging information ----
message : java.lang.NullPointerException
cause-exception : java.lang.RuntimeException
cause-message : java.lang.NullPointerException
class : com.test.jmeter.logger.PerformanceResultCollector
required-type : com.test.jmeter.logger.PerformanceResultCollector
converter-type : org.apache.jmeter.save.converters.TestElementConverter
path : /jmeterTestPlan/hashTree/hashTree/hashTree/com.test.jmeter.logger.PerformanceResultCollector
line number : 379
class[1] : org.apache.jorphan.collections.ListedHashTree
converter-type[1] : org.apache.jmeter.save.converters.HashTreeConverter
------------------------------- : java.lang.NullPointerException : java.lang.NullPointerException
---- Debugging information ----
message : java.lang.NullPointerException
cause-exception : java.lang.RuntimeException
cause-message : java.lang.NullPointerException
class : com.test.jmeter.logger.PerformanceResultCollector
required-type : com.test.jmeter.logger.PerformanceResultCollector
converter-type : org.apache.jmeter.save.converters.TestElementConverter
path : /jmeterTestPlan/hashTree/hashTree/hashTree/com.test.jmeter.logger.PerformanceResultCollector
line number : 379
class[1] : org.apache.jorphan.collections.ListedHashTree
converter-type[1] : org.apache.jmeter.save.converters.HashTreeConverter

在日志中,我发现它已经进入了PerformanceResultCollector的构造函数中。但为什么它会抛出 NulPointerException。我确认 Linux 上的 jmeter 库与 Windows 上的相同。谁能告诉我我的听众出了什么问题?非常感谢

在我多次修改代码后,我终于知道如何解决它,尽管我不知道原因。在 PerformanceResultCollector.class 中,如果我构造惰性 CustomCollector,它就可以工作。

public class PerformanceResultCollector extends ResultCollector implements Serializable {    
CustomCollector collector;

public PerformanceResultCollector() {
log.info("construct performance collector")

}
@Override
public void sampleOccurred(SampleEvent e) {
if (null == collector) {
collector = new CustomCollector();
}
collector.addSample(e.getResult());
}

public void cleanUp(){
CustomCollector.cleanUp();
}
}

也许 JMeter 对于非 gui 和 gui 模式以不同的方式解析 jmx 脚本。

最佳答案

您是否也将 MySql 驱动程序放入 jmeter/lib 文件夹中?

您确定您的 jdbc 网址吗? host:port 可以从你的 Linux 机器加入吗?

CustomCollector 构造函数做什么?

您是否在类里面以非 GUI 模式尝试过 Windows,还是仅以 GUI 模式尝试过?

关于linux - 我的自定义 JMeter 监听器无法在 Linux 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31889799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com