问题描述
我正在开发一个 Spring Batch 应用程序,它从 Oracle 数据库中获取数据。它包含大约 20L 的数据。我实现了 AsynchronousTaskExecutor,并发限制为 20,节流限制为 10。对于数据源,它是 - spring.datasource.max-active=50
以下是我的应用程序的线程图 (jprofiler)。它显示了处于阻塞和等待状态的更多线程。我想明白为什么会这样。另外,如何提高批处理的性能?
解决方法
您必须使用“监视器和锁定”部分中的视图来获取有关锁定部分的更多信息。如果您在那里记录监视器,线程视图(在您的屏幕截图中)将有工具提示,其中包含有关等待和阻塞状态的堆栈跟踪。