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

时间:2015-12-13 14:57:02

标签: java multithreading tomcat threadpool threadpoolexecutor

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

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

1 个答案:

答案 0 :(得分:1)

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

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

在开发代码时,请确保:

  • 使用" groovy"作为一种语言(你也需要在类路径中使用groovy-all.jar)
  • set" Compilation Key"对于每个采样器的独特之处

您也可以考虑从Java Request Sampler调用您的代码,但是调试和更改将更加困难,因为您每次使用JSR223时都必须重新编译它,并且很快就会对您进行修改能够查看Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For!了解更多详情。