基于 Java 的线程池 : How to test performance?

标签 java multithreading tomcat threadpool threadpoolexecutor

<分区>

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

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

最佳答案

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

然后你可以使用JSR223 Sampler使用 JMeter Listeners 调用您的方法并将它们与 ThreadPoolExecutor 进行比较,例如 Aggregate Report

在开发代码时确保:

  • 使用“groovy”作为一种语言(您还需要在类路径中使用 groovy-all.jar)
  • 为每个采样器设置唯一的“编译 key ”

您还可以考虑从 Java Request 调用您的代码Sampler,但它会更难调试和进行更改,因为您每次都必须重新编译它,而使用 JSR223 和 groovy 您将能够看到 Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For!了解更多详情。

关于基于 Java 的线程池 : How to test performance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34252414/

相关文章:

java - Android - 在 Google Maps API 中禁用双指缩放控制

python - 使用生成器在 python 中线程化

java - HTTP 状态 500 - java.lang.NullPointerException Servlet + jsp

java - 如何知道 JSON 字符串是否可以无错误地转换为 JSONObject?

java - 为什么 TreeSet.contains() 不起作用?

java - Eclipse 中的枚举 nosuchmethoderror

c++ - 多线程中是否需要原子类型? (OS X, clang, c++11)

java - 同步(this)和同步(Thread.currentThread())之间的区别

java - 在生产服务器上启用 jmx(lambda 探针)是个好主意吗?

java - 无法创建资源实例。 javax.命名