Quartz 调度程序突然停止并且无法处理线程

Quartz schedular stops suddenly and it is not able to handle threads

我们当前的应用程序是 运行 在 glassfish 和 windows 服务器上。我们现在将应用程序移至 linux 服务器上的码头和 运行。 应用程序中有一个 quartz 作业,它每分钟运行一次,并从远程服务器获取 ftp 文件。 最近发现作业突然停了,quartz也没有异常。

我添加了一个quartz.properties文件并配置如下,

org.quartz.scheduler.skipUpdateCheck = true
org.quartz.scheduler.instanceName = MyQuartzScheduler
org.quartz.scheduler.jobFactory.class = org.quartz.simpl.SimpleJobFactory
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount=10
org.quartz.scheduler.jmx.export  = true
org.quartz.scheduler.threadName="QuartzThreadFa"

我也实现了 quartz 停止工作后的线程转储(应用程序 运行 没有任何错误)

在线程转储中,我看到石英正在使用所有线程,直到线程计数结束。并且所有线程都被对象锁定,

线程转储;

"qtp1074009022-11344" prio=10 tid=0x00007f480c00e000 nid=0x2dd0 waiting on condition [0x00007f4783ffe000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000000e6b313d8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)
    at org.eclipse.jetty.util.BlockingArrayQueue.poll(BlockingArrayQueue.java:390)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.idleJobPoll(QueuedThreadPool.java:509)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.access0(QueuedThreadPool.java:48)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:563)
    at java.lang.Thread.run(Thread.java:745)

"Timer-1" daemon prio=10 tid=0x00007f47c8007000 nid=0x2bd0 in Object.wait() [0x00007f47838f3000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.util.TimerThread.mainLoop(Timer.java:552)
    - locked <0x00000000e7187828> (a java.util.TaskQueue)
    at java.util.TimerThread.run(Timer.java:505)


"Timer-0" daemon prio=10 tid=0x00007f477c01e000 nid=0x2bb6 in Object.wait() [0x00007f4783efd000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.util.TimerThread.mainLoop(Timer.java:552)
    - locked <0x00000000e70b1aa0> (a java.util.TaskQueue)
    at java.util.TimerThread.run(Timer.java:505)

"Scheduler-1583944291" prio=10 tid=0x00007f47f8008000 nid=0x2bb4 waiting on condition [0x00007f48542af000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000000e6c7cdf8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1079)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:807)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

"DestroyJavaVM" prio=10 tid=0x00007f488800d000 nid=0x2b34 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"qtp1074009022-49-acceptor-3-ServerConnector@cd9f9e{HTTP/1.1}{0.0.0.0:10900}" prio=10 tid=0x00007f478c001000 nid=0x2bb1 waiting for monitor entry [0x00007f48543b0000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:225)
    - waiting to lock <0x00000000e70e29c8> (a java.lang.Object)
    at org.eclipse.jetty.server.ServerConnector.accept(ServerConnector.java:321)
    at org.eclipse.jetty.server.AbstractConnector$Acceptor.run(AbstractConnector.java:460)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:532)
    at java.lang.Thread.run(Thread.java:745)

"qtp1074009022-48-acceptor-2-ServerConnector@cd9f9e{HTTP/1.1}{0.0.0.0:10900}" prio=10 tid=0x00007f47cc001000 nid=0x2bb0 waiting for monitor entry [0x00007f48544b1000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:225)
    - waiting to lock <0x00000000e70e29c8> (a java.lang.Object)
    at org.eclipse.jetty.server.ServerConnector.accept(ServerConnector.java:321)
    at org.eclipse.jetty.server.AbstractConnector$Acceptor.run(AbstractConnector.java:460)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:532)
    at java.lang.Thread.run(Thread.java:745)


"QuartzThreadFa" prio=10 tid=0x00007f4888747800 nid=0x2bad in Object.wait() [0x00007f48547bf000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool.blockForAvailableThreads(SimpleThreadPool.java:452)
    - locked <0x00000000e6e2f0c8> (a java.lang.Object)
    at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:263)

"MyQuartzScheduler_Worker-10" prio=10 tid=0x00007f488873e000 nid=0x2bac runnable [0x00007f48548c0000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
    at java.net.ServerSocket.implAccept(ServerSocket.java:530)
    at java.net.ServerSocket.accept(ServerSocket.java:498)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:832)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:759)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3293)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3271)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3171)
    at com.fatr.myApp.trawler.jobs.FtpJob.getRemoteFiles(FtpJob.java:85)
    at com.fatr.myApp.trawler.jobs.FtpJob.execute(FtpJob.java:48)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
    - locked <0x00000000e6c80e58> (a java.lang.Object)

"MyQuartzScheduler_Worker-9" prio=10 tid=0x00007f488873c800 nid=0x2bab runnable [0x00007f48549c1000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
    at java.net.ServerSocket.implAccept(ServerSocket.java:530)
    at java.net.ServerSocket.accept(ServerSocket.java:498)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:832)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:759)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3293)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3271)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3171)
    at com.fatr.myApp.trawler.jobs.FtpJob.getRemoteFiles(FtpJob.java:85)
    at com.fatr.myApp.trawler.jobs.FtpJob.execute(FtpJob.java:48)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
    - locked <0x00000000e6d80280> (a java.lang.Object)

"MyQuartzScheduler_Worker-8" prio=10 tid=0x00007f4888730000 nid=0x2baa runnable [0x00007f4854ac2000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
    at java.net.ServerSocket.implAccept(ServerSocket.java:530)
    at java.net.ServerSocket.accept(ServerSocket.java:498)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:832)
    at org.apache.commons.net.ftp.FTPClient._retrieveFile(FTPClient.java:1854)
    at org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1845)
    at com.fatr.myApp.trawler.jobs.FtpJob.createFileAndDownloadFromFTP(FtpJob.java:209)
    at com.fatr.myApp.trawler.jobs.FtpJob.getRemoteFiles(FtpJob.java:126)
    at com.fatr.myApp.trawler.jobs.FtpJob.execute(FtpJob.java:48)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
    - locked <0x00000000e6d80298> (a java.lang.Object)

"MyQuartzScheduler_Worker-7" prio=10 tid=0x00007f488872e000 nid=0x2ba9 runnable [0x00007f4854bc3000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
    at java.net.ServerSocket.implAccept(ServerSocket.java:530)
    at java.net.ServerSocket.accept(ServerSocket.java:498)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:832)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:759)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3293)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3271)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3171)
    at com.fatr.myApp.trawler.jobs.FtpJob.getRemoteFiles(FtpJob.java:85)
    at com.fatr.myApp.trawler.jobs.FtpJob.execute(FtpJob.java:48)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
    - locked <0x00000000e6d8e180> (a java.lang.Object)

"MyQuartzScheduler_Worker-6" prio=10 tid=0x00007f488872c000 nid=0x2ba8 runnable [0x00007f4854cc3000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
    at java.net.ServerSocket.implAccept(ServerSocket.java:530)
    at java.net.ServerSocket.accept(ServerSocket.java:498)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:832)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:759)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3293)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3271)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3171)
    at com.fatr.myApp.trawler.jobs.FtpJob.getRemoteFiles(FtpJob.java:85)
    at com.fatr.myApp.trawler.jobs.FtpJob.execute(FtpJob.java:48)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
    - locked <0x00000000e6d802b0> (a java.lang.Object)

"MyQuartzScheduler_Worker-5" prio=10 tid=0x00007f4888729800 nid=0x2ba7 runnable [0x00007f4854dc4000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
    at java.net.ServerSocket.implAccept(ServerSocket.java:530)
    at java.net.ServerSocket.accept(ServerSocket.java:498)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:832)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:759)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3293)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3271)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3171)
    at com.fatr.myApp.trawler.jobs.FtpJob.getRemoteFiles(FtpJob.java:85)
    at com.fatr.myApp.trawler.jobs.FtpJob.execute(FtpJob.java:48)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
    - locked <0x00000000e6d802c8> (a java.lang.Object)

"MyQuartzScheduler_Worker-4" prio=10 tid=0x00007f4888727800 nid=0x2ba6 runnable [0x00007f4854ec6000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
    at java.net.ServerSocket.implAccept(ServerSocket.java:530)
    at java.net.ServerSocket.accept(ServerSocket.java:498)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:832)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:759)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3293)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3271)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3171)
    at com.fatr.myApp.trawler.jobs.FtpJob.getRemoteFiles(FtpJob.java:85)
    at com.fatr.myApp.trawler.jobs.FtpJob.execute(FtpJob.java:48)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
    - locked <0x00000000e6d802e0> (a java.lang.Object)

"MyQuartzScheduler_Worker-3" prio=10 tid=0x00007f4888726000 nid=0x2ba5 runnable [0x00007f4854fc7000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
    at java.net.ServerSocket.implAccept(ServerSocket.java:530)
    at java.net.ServerSocket.accept(ServerSocket.java:498)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:832)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:759)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3293)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3271)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3171)
    at com.fatr.myApp.trawler.jobs.FtpJob.getRemoteFiles(FtpJob.java:85)
    at com.fatr.myApp.trawler.jobs.FtpJob.execute(FtpJob.java:48)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
    - locked <0x00000000e6d802f8> (a java.lang.Object)

"MyQuartzScheduler_Worker-2" prio=10 tid=0x00007f4888724800 nid=0x2ba4 runnable [0x00007f48550c8000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
    at java.net.ServerSocket.implAccept(ServerSocket.java:530)
    at java.net.ServerSocket.accept(ServerSocket.java:498)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:832)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:759)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3293)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3271)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3171)
    at com.fatr.myApp.trawler.jobs.FtpJob.getRemoteFiles(FtpJob.java:85)
    at com.fatr.myApp.trawler.jobs.FtpJob.execute(FtpJob.java:48)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
    - locked <0x00000000e6c80e70> (a java.lang.Object)

"MyQuartzScheduler_Worker-1" prio=10 tid=0x00007f4888720800 nid=0x2ba3 runnable [0x00007f48551c9000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
    at java.net.ServerSocket.implAccept(ServerSocket.java:530)
    at java.net.ServerSocket.accept(ServerSocket.java:498)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:832)
    at org.apache.commons.net.ftp.FTPClient._retrieveFile(FTPClient.java:1854)
    at org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1845)
    at com.fatr.myApp.trawler.jobs.FtpJob.createFileAndDownloadFromFTP(FtpJob.java:209)
    at com.fatr.myApp.trawler.jobs.FtpJob.getRemoteFiles(FtpJob.java:118)
    at com.fatr.myApp.trawler.jobs.FtpJob.execute(FtpJob.java:48)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
    - locked <0x00000000e6d80310> (a java.lang.Object)

"qtp1074009022-32-acceptor-1-ServerConnector@cd9f9e{HTTP/1.1}{0.0.0.0:10900}" prio=10 tid=0x00007f4888584800 nid=0x2b77 runnable [0x00007f48555dc000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
    at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:241)
    - locked <0x00000000e70e29c8> (a java.lang.Object)
    at org.eclipse.jetty.server.ServerConnector.accept(ServerConnector.java:321)
    at org.eclipse.jetty.server.AbstractConnector$Acceptor.run(AbstractConnector.java:460)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:532)
    at java.lang.Thread.run(Thread.java:745)

"qtp1074009022-31-acceptor-0-ServerConnector@cd9f9e{HTTP/1.1}{0.0.0.0:10900}" prio=10 tid=0x00007f4888582800 nid=0x2b76 waiting for monitor entry [0x00007f48556dd000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:225)
    - waiting to lock <0x00000000e70e29c8> (a java.lang.Object)
    at org.eclipse.jetty.server.ServerConnector.accept(ServerConnector.java:321)
    at org.eclipse.jetty.server.AbstractConnector$Acceptor.run(AbstractConnector.java:460)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:532)
    at java.lang.Thread.run(Thread.java:745)

"qtp1074009022-30-selector-7" prio=10 tid=0x00007f4888580800 nid=0x2b75 runnable [0x00007f48557de000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
    at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
    at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
    - locked <0x00000000e70b1ad0> (a sun.nio.ch.Util)
    - locked <0x00000000e70b1ae8> (a java.util.Collections$UnmodifiableSet)
    - locked <0x00000000e705e970> (a sun.nio.ch.EPollSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.select(SelectorManager.java:452)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.run(SelectorManager.java:428)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:532)
    at java.lang.Thread.run(Thread.java:745)

"qtp1074009022-29-selector-6" prio=10 tid=0x00007f488857e800 nid=0x2b74 runnable [0x00007f48558df000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
    at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
    at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
    - locked <0x00000000e70e6478> (a sun.nio.ch.Util)
    - locked <0x00000000e70e6490> (a java.util.Collections$UnmodifiableSet)
    - locked <0x00000000e6e48fe8> (a sun.nio.ch.EPollSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.select(SelectorManager.java:452)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.run(SelectorManager.java:428)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:532)
    at java.lang.Thread.run(Thread.java:745)

"qtp1074009022-28-selector-5" prio=10 tid=0x00007f488857c800 nid=0x2b73 runnable [0x00007f48559e0000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
    at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
    at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
    - locked <0x00000000e70e2a70> (a sun.nio.ch.Util)
    - locked <0x00000000e70e2a88> (a java.util.Collections$UnmodifiableSet)
    - locked <0x00000000e70c5f80> (a sun.nio.ch.EPollSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.select(SelectorManager.java:452)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.run(SelectorManager.java:428)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:532)
    at java.lang.Thread.run(Thread.java:745)

"qtp1074009022-27-selector-4" prio=10 tid=0x00007f488857a000 nid=0x2b72 runnable [0x00007f4855ae1000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
    at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
    at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
    - locked <0x00000000e7091b38> (a sun.nio.ch.Util)
    - locked <0x00000000e7091b50> (a java.util.Collections$UnmodifiableSet)
    - locked <0x00000000e70ac7e8> (a sun.nio.ch.EPollSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.select(SelectorManager.java:452)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.run(SelectorManager.java:428)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:532)
    at java.lang.Thread.run(Thread.java:745)

"qtp1074009022-26-selector-3" prio=10 tid=0x00007f4888578000 nid=0x2b71 runnable [0x00007f4855be2000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
    at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
    at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
    - locked <0x00000000e70e64c0> (a sun.nio.ch.Util)
    - locked <0x00000000e70e64d8> (a java.util.Collections$UnmodifiableSet)
    - locked <0x00000000e6e48f58> (a sun.nio.ch.EPollSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.select(SelectorManager.java:452)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.run(SelectorManager.java:428)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:532)
    at java.lang.Thread.run(Thread.java:745)

"qtp1074009022-25-selector-2" prio=10 tid=0x00007f4888576800 nid=0x2b70 runnable [0x00007f4855ce3000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
    at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
    at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
    - locked <0x00000000e70e6508> (a sun.nio.ch.Util)
    - locked <0x00000000e70e6520> (a java.util.Collections$UnmodifiableSet)
    - locked <0x00000000e7039d10> (a sun.nio.ch.EPollSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.select(SelectorManager.java:452)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.run(SelectorManager.java:428)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:532)
    at java.lang.Thread.run(Thread.java:745)

"qtp1074009022-24-selector-1" prio=10 tid=0x00007f4888575000 nid=0x2b6f runnable [0x00007f4855de4000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
    at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
    at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
    - locked <0x00000000e70e2ab8> (a sun.nio.ch.Util)
    - locked <0x00000000e70e2ad0> (a java.util.Collections$UnmodifiableSet)
    - locked <0x00000000e70c5e18> (a sun.nio.ch.EPollSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.select(SelectorManager.java:452)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.run(SelectorManager.java:428)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:532)
    at java.lang.Thread.run(Thread.java:745)

"qtp1074009022-23-selector-0" prio=10 tid=0x00007f4888571000 nid=0x2b6e runnable [0x00007f4855ee5000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
    at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
    at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
    - locked <0x00000000e70e2b00> (a sun.nio.ch.Util)
    - locked <0x00000000e70e2b18> (a java.util.Collections$UnmodifiableSet)
    - locked <0x00000000e70c5ea8> (a sun.nio.ch.EPollSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.select(SelectorManager.java:452)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.run(SelectorManager.java:428)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:532)
    at java.lang.Thread.run(Thread.java:745)


"org.eclipse.jetty.util.RolloverFileOutputStream" daemon prio=10 tid=0x00007f48884ea800 nid=0x2b4c in Object.wait() [0x00007f48569f6000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.util.TimerThread.mainLoop(Timer.java:552)
    - locked <0x00000000e6b8cc48> (a java.util.TaskQueue)
    at java.util.TimerThread.run(Timer.java:505)

问题是该应用程序 运行 几年了,在 Glassfish /Windows 上没有任何石英问题, 现在它只是 运行 直到线程计数在 Jetty/Linux 结束并且它无法 stop/kill 线程。 任何帮助将不胜感激,谢谢

看起来不是您的 Quartz 调度程序的问题。

从您的线程转储来看,org.apache.commons.net.ftp.FTPClient(来自 com.fatr.myApp.trawler.jobs.FtpJob 的 运行)似乎有问题并耗尽了您的所有线程。

这个问题看起来像是 FTPClient(在 lx 服务器上)和 FTPServer 之间的问题。来自 Linux 的 FTPClient 在某个时间点后挂起。由于 FTPClient(在本例中为 Linux)和服务器之间通信的不寻常性质,应在 Client(Linux Server)上打开某些端口号,以便 FTPServer 发送回数据。但是由于防火墙的限制,大多数这些非特权端口在 Linux 上都关闭了。显然,每次来自 FTPClient 的请求似乎 FTPServer 使用不同的端口,其中一些在 Linux.
上未打开 解决方案看起来像FTPClient进入"PASSIVE"模式。在被动模式下,FTPClient(on Linux) 为服务器打开一个专用端口来发送回数据。

所以根据这些信息,我将FTPClient设置为被动并再次部署。

FtpClient.enterLocalPassiveMode()

它现在可以正常工作了。