Question

Je suis un test en charge la messagerie jboss installer avec 5 producteurs produisant 100.000 100k messages. Je vois désengorgement significatif. Lorsque je contrôle le profileur, je vois qu'il ya 15 fils de discussion nommés WorkerThread #. Ces fils sont répartis à 100%, sans temps d'attente. Je pense qu'ils peuvent être liés. Ne sait quiconque la fonction de ces services de threads et s'il y a un paramètre ThreadPool. J'utilise un supp

JBoss Enterprise Application Server 4.3 CP08
JBoss Enterprise Service Bus 4.4 CP04
JBoss Transactions 4.2.3._CP07
JBoss Messaging 1.4.0.SP3-CP09
JBoss Règles 4.0.7
JBoss jBPM 3.2.9
JBoss Web Services de 2.0.1.SP2_CP07

Était-ce utile?

La solution

Je l'ai compris. Ce ne est pas un pool de threads. Dans le jboss-messaging.sar / remoting-bisocket.xml fichier qui définit le connecteur d'accès distant pour Jboss Messaging, vous voyez quelques valeurs principalement clientMaxPool, MaxPoolSize, numAcceptThreads.

Dans la communication à distance, quand une prise est établie fils sont créés pour contrôler que la prise à la valeur de « numAcceptThreads ». Tout ce fil n'est lu des données de la prise et la passer à un fil dans la piscine client (régie par MaxPoolSize).

Les fils appelés WorkerThread # [] se réfèrent aux filets accepter. La raison pour laquelle je vois plus quand je crée plus de producteurs est parce que pour le transport de bisocket pour Jboss Messaging il y a apparemment trois sockets créées. Dans un premier temps il y a 3, mais quand je crée 5 producteurs ce nombre est porté à 15 (ou 5 * 3 pour ceux qui ne mathématiquement incliné :)). La raison pour laquelle ils sont 100% alloués est parce que quand je vous envoie tous ces messages les fils lus de la prise, la main hors de fil Server, revenir à la lecture de la prise (où ce qui est toujours données)

Donc, la réponse courte est qu'il n'y a pas de piscine pour gouverner ces fils. Vous pouvez avoir plus de 1 acceptent fil, mais il serait presque jamais de sens. Parce que son travail est si minime lire les données, la main tout, lire les données ... Donc, avoir plus de discussions serait juste ajouter les frais généraux de synchronisation.

Autres conseils

est de http://download.oracle.com/javase /tutorial/uiswing/concurrency/worker.html ; elle pourra être utile.

Quand un programme Swing a besoin d'exécuter une tâche de longue haleine, il utilise généralement l'un des threads de travail, également connu sous le nom des fils de fond. Chaque tâche en cours d'exécution sur un thread de travail est représenté par une instance de javax.swing.SwingWorker. SwingWorker lui-même est une classe abstraite; vous devez définir une sous-classe afin de créer un objet SwingWorker; les classes internes anonymes sont souvent utiles pour la création d'objets SwingWorker très simples.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top