多批次导入任务,会出现异步线程停止工作的情况,后续无论导入多少任务,异步线程都不会执行,只有重启能解决。
进入jdk的bin目录:
cd /beeb/ap/uip/jdk1.8.0_231/bin
./jstack -l 28406 >./sp-dbms.jstack.log
其中28406是服务进程号。
./jmap -dump:live,format=b,file=/beeb/ap/uip/agent/udp-logs/sp-dbms/appLogs/sp-dbms-heap.bin 28406
1.启动jhat:
jhat xxx.dump
实战图:

jhat命令后面跟的是文件名,这个文件名的后缀可以是.dump,也可以是.bin,具体要看你到出的文件后缀。
2.启动后,就可以访问:http://127.0.0.1:7000/
通过分析堆内存没看出有什么异常,于是我掉头又去查看了sp-dbms.jstack.log日志。
可以看的下图中,对应的线程信息,async-import-16(就是我用到的线程池)线程属于WAITING状态,并且parking to wait for (CountDownLatch),那么我可以猜测,是不是因为CountDownLatch这个共享锁因为某些原因没有释放出来?

查看代码,捕获异常后更新数据,插入失败状态以及失败原因,这里有可能出现数据库连接等异常,导致下面的latch.countDown()未执行,继而出现线程一直在等待的问题:

在第一个红框出的update...方法处try...catch一下就行了。
解决这个问题没有用到java visualVM工具,但我也记录一下它的使用步骤:

打开jvisualvm.exe。

具体分析方法以后再阐述。