JBoss WorkManager线程处于阻塞状态

JBoss WorkManager线程处于阻塞状态,jboss,spring-integration,Jboss,Spring Integration,我们正在使用JBoss5和JDK1.6。我们使用Spring集成来轮询来自多个目录的文件 <file:inbound-channel-adapter id="flowInboundFileAdapter" directory="${service.integration.path}" scanner="recursiveScanner" filter="customPathFileFilter" channel="myInChannel" auto-create-directory

我们正在使用JBoss5和JDK1.6。我们使用Spring集成来轮询来自多个目录的文件

<file:inbound-channel-adapter id="flowInboundFileAdapter" directory="${service.integration.path}" scanner="recursiveScanner" filter="customPathFileFilter"
    channel="myInChannel" auto-create-directory="false" auto-startup="true" prevent-duplicates="true" queue-size="10">
    <poller max-messages-per-poll="10" fixed-rate="10" time-unit="SECONDS" task-executor="taskExecutor" />
  </file:inbound-channel-adapter>
  <beans:bean id="recursiveScanner" class="org.springframework.integration.file.RecursiveLeafOnlyDirectoryScanner" />

我们刚刚从线程转储中意识到,所有线程(200个线程中有198个)都被阻塞在.integration.file.filters.AcceptOnceFileListFilter.accept(AcceptOnceFileListFilter.java:60)。我们不确定这是僵局还是其他原因?我们如何解决这个问题?我们能在不重启JBoss的情况下杀死他们吗

Thread: WorkManager(2)-1 : priority:5, demon:true, threadId:71, threadState:WAITING
- waiting on <0x6b25d66e> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:220)
org.jboss.resource.adapter.mail.inflow.NewMsgsWorker.run(NewMsgsWorker.java:76)
org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:205)
org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:662)

Locked synchronizers : 
- locked <0x699f91ee> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
Thread: WorkManager(2)-2 : priority:5, demon:true, threadId:115, threadState:BLOCKED
- waiting on <0x1f3fd8f5> (a java.lang.Object)
org.springframework.integration.file.filters.AcceptOnceFileListFilter.accept(AcceptOnceFileListFilter.java:60)
org.springframework.integration.file.filters.AbstractFileListFilter.filterFiles(AbstractFileListFilter.java:39)
org.springframework.integration.file.filters.CompositeFileListFilter.filterFiles(CompositeFileListFilter.java:93)
org.springframework.integration.file.DefaultDirectoryScanner.listFiles(DefaultDirectoryScanner.java:69)
org.springframework.integration.file.FileReadingMessageSource.scanInputDirectory(FileReadingMessageSource.java:276)
org.springframework.integration.file.FileReadingMessageSource.receive(FileReadingMessageSource.java:250)
org.springframework.integration.endpoint.SourcePollingChannelAdapter.receiveMessage(SourcePollingChannelAdapter.java:111)
org.springframework.integration.endpoint.AbstractTransactionSynchronizingPollingEndpoint.doPoll(AbstractTransactionSynchronizingPollingEndpoint.java:67)
org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:146)
org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:144)
org.springframework.integration.endpoint.AbstractPollingEndpoint$Poller$1.run(AbstractPollingEndpoint.java:236)
org.springframework.integration.util.ErrorHandlingTaskExecutor$1.run(ErrorHandlingTaskExecutor.java:52)
com.dashboard.service.security.spring.SecurityContextAwareTaskExecutor$1.run(SecurityContextAwareTaskExecutor.java:26)
org.springframework.jca.work.DelegatingWork.run(DelegatingWork.java:57)
org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:205)
org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:662)

Locked synchronizers : 
- locked <0x12106b7> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
Thread: WorkManager(2)-3 : priority:5, demon:true, threadId:116, threadState:BLOCKED
- waiting on <0x1f3fd8f5> (a java.lang.Object)
org.springframework.integration.file.filters.AcceptOnceFileListFilter.accept(AcceptOnceFileListFilter.java:60)
org.springframework.integration.file.filters.AbstractFileListFilter.filterFiles(AbstractFileListFilter.java:39)
org.springframework.integration.file.filters.CompositeFileListFilter.filterFiles(CompositeFileListFilter.java:93)
org.springframework.integration.file.DefaultDirectoryScanner.listFiles(DefaultDirectoryScanner.java:69)
org.springframework.integration.file.FileReadingMessageSource.scanInputDirectory(FileReadingMessageSource.java:276)
org.springframework.integration.file.FileReadingMessageSource.receive(FileReadingMessageSource.java:250)
org.springframework.integration.endpoint.SourcePollingChannelAdapter.receiveMessage(SourcePollingChannelAdapter.java:111)
org.springframework.integration.endpoint.AbstractTransactionSynchronizingPollingEndpoint.doPoll(AbstractTransactionSynchronizingPollingEndpoint.java:67)
org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:146)
org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:144)
org.springframework.integration.endpoint.AbstractPollingEndpoint$Poller$1.run(AbstractPollingEndpoint.java:236)
org.springframework.integration.util.ErrorHandlingTaskExecutor$1.run(ErrorHandlingTaskExecutor.java:52)
com.dashboard.service.security.spring.SecurityContextAwareTaskExecutor$1.run(SecurityContextAwareTaskExecutor.java:26)
org.springframework.jca.work.DelegatingWork.run(DelegatingWork.java:57)
org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:205)
org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:662)

Locked synchronizers : 
- locked <0x4524fab4> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
Thread:WorkManager(2)-1:priority:5,demon:true,threadId:71,threadState:WAITING
-等待(java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
sun.misc.Unsafe.park(本机方法)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:220)
org.jboss.resource.adapter.mail.inflow.NewMsgsWorker.run(NewMsgsWorker.java:76)
org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:205)
org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
run(Thread.java:662)
锁定同步器:
-锁定(一个java.util.concurrent.locks.ReentrantLock$NonfairSync)
线程:WorkManager(2)-2:优先级:5,demon:true,线程ID:115,线程状态:BLOCKED
-等待(一个java.lang.Object)
org.springframework.integration.file.filters.AcceptOnceFileListFilter.accept(AcceptOnceFileListFilter.java:60)
org.springframework.integration.file.filters.AbstractFileListFilter.FilterFile(AbstractFileListFilter.java:39)
org.springframework.integration.file.filters.CompositeFileListFilter.FilterFile(CompositeFileListFilter.java:93)
org.springframework.integration.file.DefaultDirectoryScanner.listFiles(DefaultDirectoryScanner.java:69)
org.springframework.integration.file.FileReadingMessageSource.scanInputDirectory(FileReadingMessageSource.java:276)
org.springframework.integration.file.FileReadingMessageSource.receive(FileReadingMessageSource.java:250)
org.springframework.integration.endpoint.SourcePollingChannelAdapter.receiveMessage(SourcePollingChannelAdapter.java:111)
org.springframework.integration.endpoint.AbstractTransactionSynchronizingPollingEndpoint.doPoll(AbstractTransactionSynchronizingPollingEndpoint.java:67)
org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:146)
org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:144)
org.springframework.integration.endpoint.AbstractPollingEndpoint$Poller$1.run(AbstractPollingEndpoint.java:236)
org.springframework.integration.util.ErrorHandlingTaskExecutor$1.run(ErrorHandlingTaskExecutor.java:52)
com.dashboard.service.security.spring.SecurityContextAwareTaskExecutor$1.run(SecurityContextAwareTaskExecutor.java:26)
org.springframework.jca.work.DelegatingWork.run(DelegatingWork.java:57)
org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:205)
org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
run(Thread.java:662)
锁定同步器:
-锁定(一个java.util.concurrent.locks.ReentrantLock$NonfairSync)
线程:WorkManager(2)-3:优先级:5,demon:true,线程ID:116,线程状态:BLOCKED
-等待(一个java.lang.Object)
org.springframework.integration.file.filters.AcceptOnceFileListFilter.accept(AcceptOnceFileListFilter.java:60)
org.springframework.integration.file.filters.AbstractFileListFilter.FilterFile(AbstractFileListFilter.java:39)
org.springframework.integration.file.filters.CompositeFileListFilter.FilterFile(CompositeFileListFilter.java:93)
org.springframework.integration.file.DefaultDirectoryScanner.listFiles(DefaultDirectoryScanner.java:69)
org.springframework.integration.file.FileReadingMessageSource.scanInputDirectory(FileReadingMessageSource.java:276)
org.springframework.integration.file.FileReadingMessageSource.receive(FileReadingMessageSource.java:250)
org.springframework.integration.endpoint.SourcePollingChannelAdapter.receiveMessage(SourcePollingChannelAdapter.java:111)
org.springframework.integration.endpoint.AbstractTransactionSynchronizingPollingEndpoint.doPoll(AbstractTransactionSynchronizingPollingEndpoint.java:67)
org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:146)
org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:144)
org.springframework.integration.endpoint.AbstractPollingEndpoint$Poller$1.run(AbstractPollingEndpoint.java:236)
org.springframework.integration.util.ErrorHandlingTaskExecutor$1.run(ErrorHandlingTaskExecutor.java:52)
com.dashboard.service.security.spring.SecurityContextAwareTaskExecutor$1.run(SecurityContextAwareTaskExecutor.java:26)
org.springframework.jca.work.DelegatingWork.run(DelegatingWork.java:57)
org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:205)
org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
run(Thread.java:662)
锁定同步器:
-锁定(一个java.util.concurrent.locks.ReentrantLock$NonfairSync)

我最好的猜测是目录中有大量文件;每次扫描目录时,我们都必须检查过滤器中的每个目录

拥有大量文件会降低性能

处理完文件后,通常最好重命名/删除文件