首页 > 解决方案 > Pepper-box 的 JMeter Kafka 测试。Jmeter错误:PlaintTextLoadGenerator:请确保...参数正确传递

问题描述

我想用 JMeter 做一个 kafka 性能测试。我遵循下一个教程:

我得到了这个错误:

2021-09-01 18:13:04,582 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2021-09-01 18:13:04,583 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2021-09-01 18:13:04,584 INFO o.a.j.p.j.s.JavaSampler: Created class: com.gslab.pepper.sampler.PepperBoxKafkaSampler. Uses tearDownTest: 
2021-09-01 18:13:04,584 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2021-09-01 18:13:04,733 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Thread Group
2021-09-01 18:13:04,733 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Thread Group.
2021-09-01 18:13:04,733 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2021-09-01 18:13:04,733 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 delayedStart=false
2021-09-01 18:13:04,734 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2021-09-01 18:13:04,734 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2021-09-01 18:13:04,752 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-1
2021-09-01 18:13:04,757 ERROR c.g.p.l.i.PlaintTextLoadGenerator: Please make sure that expressions functions are already defined and parameters are correctly passed.
com.gslab.pepper.exception.PepperBoxException: java.lang.NullPointerException
    at com.gslab.pepper.input.SchemaTranslator.getPlainTextMsgIterator(SchemaTranslator.java:54) ~[pepper-box-1.0%20(1).jar:?]
    at com.gslab.pepper.input.SchemaProcessor.getPlainTextMessageIterator(SchemaProcessor.java:36) ~[pepper-box-1.0%20(1).jar:?]
    at com.gslab.pepper.loadgen.impl.PlaintTextLoadGenerator.<init>(PlaintTextLoadGenerator.java:34) [pepper-box-1.0%20(1).jar:?]
    at com.gslab.pepper.config.plaintext.PlainTextConfigElement.iterationStart(PlainTextConfigElement.java:53) [pepper-box-1.0%20(1).jar:?]
    at org.apache.jmeter.control.GenericController.fireIterationStart(GenericController.java:399) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.control.GenericController.fireIterEvents(GenericController.java:391) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.control.GenericController.next(GenericController.java:160) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.control.LoopController.next(LoopController.java:134) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.threads.AbstractThreadGroup.next(AbstractThreadGroup.java:91) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:254) [ApacheJMeter_core.jar:5.4.1]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_191]
Caused by: java.lang.NullPointerException
    at com.gslab.pepper.input.compile.InMemoryJavaCompiler.compileSchemaClass(InMemoryJavaCompiler.java:39) ~[pepper-box-1.0%20(1).jar:?]
    at com.gslab.pepper.input.SchemaTranslator.getPlainTextMsgIterator(SchemaTranslator.java:47) ~[pepper-box-1.0%20(1).jar:?]
... 10 more
2021-09-01 18:13:04,757 ERROR c.g.p.c.p.PlainTextConfigElement: Failed to create PlaintTextLoadGenerator instance
com.gslab.pepper.exception.PepperBoxException: com.gslab.pepper.exception.PepperBoxException: java.lang.NullPointerException
    at com.gslab.pepper.loadgen.impl.PlaintTextLoadGenerator.<init>(PlaintTextLoadGenerator.java:37) ~[pepper-box-1.0%20(1).jar:?]
    at com.gslab.pepper.config.plaintext.PlainTextConfigElement.iterationStart(PlainTextConfigElement.java:53) [pepper-box-1.0%20(1).jar:?]
    at org.apache.jmeter.control.GenericController.fireIterationStart(GenericController.java:399) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.control.GenericController.fireIterEvents(GenericController.java:391) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.control.GenericController.next(GenericController.java:160) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.control.LoopController.next(LoopController.java:134) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.threads.AbstractThreadGroup.next(AbstractThreadGroup.java:91) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:254) [ApacheJMeter_core.jar:5.4.1]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_191]
Caused by: com.gslab.pepper.exception.PepperBoxException: java.lang.NullPointerException
    at com.gslab.pepper.input.SchemaTranslator.getPlainTextMsgIterator(SchemaTranslator.java:54) ~[pepper-box-1.0%20(1).jar:?]
    at com.gslab.pepper.input.SchemaProcessor.getPlainTextMessageIterator(SchemaProcessor.java:36) ~[pepper-box-1.0%20(1).jar:?]
    at com.gslab.pepper.loadgen.impl.PlaintTextLoadGenerator.<init>(PlaintTextLoadGenerator.java:34) ~[pepper-box-1.0%20(1).jar:?]
... 8 more
Caused by: java.lang.NullPointerException
    at com.gslab.pepper.input.compile.InMemoryJavaCompiler.compileSchemaClass(InMemoryJavaCompiler.java:39) ~[pepper-box-1.0%20(1).jar:?]
    at com.gslab.pepper.input.SchemaTranslator.getPlainTextMsgIterator(SchemaTranslator.java:47) ~[pepper-box-1.0%20(1).jar:?]
    at com.gslab.pepper.input.SchemaProcessor.getPlainTextMessageIterator(SchemaProcessor.java:36) ~[pepper-box-1.0%20(1).jar:?]
    at com.gslab.pepper.loadgen.impl.PlaintTextLoadGenerator.<init>(PlaintTextLoadGenerator.java:34) ~[pepper-box-1.0%20(1).jar:?]
... 8 more
2021-09-01 18:13:04,757 ERROR o.a.j.t.JMeterThread: Test failed!
java.lang.NullPointerException: null
    at com.gslab.pepper.config.plaintext.PlainTextConfigElement.iterationStart(PlainTextConfigElement.java:63) ~[pepper-box-1.0%20(1).jar:?]
    at org.apache.jmeter.control.GenericController.fireIterationStart(GenericController.java:399) ~[ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.control.GenericController.fireIterEvents(GenericController.java:391) ~[ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.control.GenericController.next(GenericController.java:160) ~[ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.control.LoopController.next(LoopController.java:134) ~[ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.threads.AbstractThreadGroup.next(AbstractThreadGroup.java:91) ~[ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:254) [ApacheJMeter_core.jar:5.4.1]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_191]
2021-09-01 18:13:04,758 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-1
2021-09-01 18:13:04,758 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2021-09-01 18:13:04,758 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)

在我看到这篇文章后: Jmeter Error: PlaintTextLoadGenerator... 我安装了 JDK(win10),但仍然出现同样的错误,所以可能这就是重点。

我错过了什么?

谢谢!

标签: apache-kafkajmeter

解决方案


  1. 您忘记包含 Java 请求采样器的屏幕截图,这可能是您以不受支持的方式使用它的情况。就像您尝试使用 JMeter 函数或变量一样 - 它会失败,您将不得不使用模板函数(如果预定义的函数不适合您的情况,可以创建自己的函数)

  2. 您的 pepper-box-1.0%20(1).jar文件看起来很可疑,听起来您将插件下载到 JMeter 安装的“lib/ext”文件夹中两次,请删除任何多余的副本,因为它可能会导致问题

  3. 如果您在JMeter Classpath中有Kafka java 客户端库,则不需要任何插件即可向 Kafka 发送消息,您可以使用JSR223 Sampler和此示例Groovy代码来完成:

    import org.apache.kafka.clients.producer.KafkaProducer
    import org.apache.kafka.clients.producer.ProducerRecord
    
    def props = new Properties();
    props.put("bootstrap.servers", "localhost:9092");
    props.put("acks", "all");
    props.put("retries", 0);
    props.put("batch.size", 16384);
    props.put("linger.ms", 1);
    props.put("buffer.memory", 33554432);
    props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
    props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
    
    def producer = new KafkaProducer<>(props);
    producer.send(new ProducerRecord<>("your-topic", "your_payload_here");
    
    producer.close();
    

推荐阅读