Jboss消息传递工作线程#这些线程是什么?

Jboss消息传递工作线程#这些线程是什么?,jboss,jms,jboss-messaging,Jboss,Jms,Jboss Messaging,我正在对jboss消息传递安装进行负载测试,5个生产者产生100000条100k消息。我看到了严重的瓶颈。监视探查器时,我看到有15个名为WorkerThread#的线程。这些线程100%分配,无需等待。我想他们可能有关系。是否有人知道这些线程服务的功能以及是否有线程池设置。我用的是supp JBoss企业应用服务器4.3 CP08 JBoss企业服务总线4.4 CP04 JBoss交易4.2.3.\u CP07 JBoss Messaging 1.4.0.SP3-CP09 JBoss规则4.0

我正在对jboss消息传递安装进行负载测试,5个生产者产生100000条100k消息。我看到了严重的瓶颈。监视探查器时,我看到有15个名为WorkerThread#的线程。这些线程100%分配,无需等待。我想他们可能有关系。是否有人知道这些线程服务的功能以及是否有线程池设置。我用的是supp

JBoss企业应用服务器4.3 CP08
JBoss企业服务总线4.4 CP04
JBoss交易4.2.3.\u CP07
JBoss Messaging 1.4.0.SP3-CP09
JBoss规则4.0.7
JBoss jBPM 3.2.9
JBoss Web Services 2.0.1.SP2_CP07这是来自;希望能有帮助


当Swing程序需要执行长时间运行的任务时,它通常使用一个辅助线程,也称为后台线程。工作线程上运行的每个任务都由javax.swing.SwingWorker的一个实例表示。SwingWorker本身是一个抽象类;必须定义子类才能创建SwingWorker对象;匿名内部类通常用于创建非常简单的SwingWorker对象

我已经弄明白了。它不是一个线程池。在定义jboss消息传递远程连接器的jboss-messaging.sar/remoting-bisocket.xml文件中,您可以看到几个值,主要是clientMaxPool、maxPoolSize和numAcceptThreads

在远程处理中,当建立套接字时,将创建线程来监视该套接字,最大值为“numaceptthreads”。该线程所做的一切就是从套接字读取数据,并将其传递给客户机池中的线程(由maxPoolSize管理)

名为workerThread#[]的线程是指接受线程。当我创建更多生产者时,我看到更多的原因是,对于Jboss消息传递的bisocket传输,显然创建了三个套接字。最初有3个,但当我创建5个制作人时,这个数字会增加到15个(对于那些没有数学倾向的人来说是5*3:)。它们被100%分配的原因是,当我发送所有这些消息时,线程从套接字读取,转移到服务器线程,返回到从套接字读取(这里总是数据)


因此,简单的回答是没有池来管理这些线程。您可以有多个accept线程,但这几乎毫无意义。这是因为它的工作非常简单读取数据,将其交给他人,读取数据。。。因此,拥有更多的线程只会增加同步开销。

如果每个线程产生100000条100k的消息,为什么会对有几个线程全速工作感到惊讶?这当然是件好事。我当然是。但我的硬件一点也没有被利用。这必须是一个池,因为当服务器处于空闲状态时,在0%分配时只有3个池,然后在100%分配时跳到15个池。然后我的反应时间就慢了下来。看起来我可能只是在把游泳池打出来。我想在池子里多放些线,那绝对不同。见下面的答案。