Java 基于线程池:如何测试性能?

Java based Thread Pool: How to test performance?

我在 JAVA 中编写了一个线程池系统,它根据请求频率(每秒请求数)动态增长和收缩。每个请求都是一个 Runnable 对象,它以随机时间间隔休眠以模拟磁盘 I/O。我需要将我的线程池性能与 Java 的 ThreadPoolExecutor 进行比较。请在以下几点帮助我。

  1. 是否有任何模拟 tool/benchmark 工具可用于测试这些线程池。
  2. 如果没有,我将如何使用 Java 的 ThreadPoolExecutor 测试我的线程池的性能?
  3. 我可以在这种情况下使用 Jmeter 吗?
  4. 我可以将我的线程池嵌入到 Tomcat 中以将其性能与 Tomcat 的 ExecutorService 进行比较吗?

您可以将代码编译为 .jar 并将其添加到 JMeter 的类路径中。

那么你可以使用JSR223 Sampler to call your methods and compare them with ThreadPoolExecutor using JMeter Listeners, for instance Aggregate Report

在开发代码时确保:

  • 使用 "groovy" 作为一种语言(您还需要在类路径中添加 groovy-all.jar)
  • 为每个采样器设置 "Compilation Key" 独特的东西

您还可以考虑从 Java Request Sampler, but it will be harder to debug and make changes as you'll have to recompile it each time while with JSR223 and groovy you'll be able See Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For! 调用您的代码以获取更多详细信息。