Domanda

Sono test di carico di installare una messaggistica JBoss con 5 produttori che producono 100.000 100k messaggi. Sto vedendo significativi strozzature. Quando ho monitorare il profiler, vedo che ci sono 15 le discussioni nome WorkerThread #. Questi fili sono allocati al 100% senza attese. Penso che possono essere correlati. Qualcuno sa che cosa funziona questi servizi discussioni e se c'è un ambiente ThreadPool. Sto usando 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 Rules 4.0.7
JBoss jBPM 3.2.9
JBoss Web Services 2.0.1.SP2_CP07

È stato utile?

Soluzione

Ho capito. La sua non è un pool di thread. Nel jboss-messaging.sar / servizi remoti-bisocket.xml file che definisce il connettore servizi remoti per JBoss Messaging, si vede un paio di valori principalmente clientMaxPool, maxPoolSize, numAcceptThreads.

In servizi remoti, fili quando si stabilisce un socket vengono creati per monitorare tale presa fino al valore di "numAcceptThreads". Tutto questo filo non è leggere i dati dalla presa e la mano fuori ad un filo in piscina cliente (governata da maxPoolSize).

I fili chiamati workerThread # [] si riferiscono alle discussioni accettare. La ragione per cui vedo più quando creo più produttori è perché per il trasporto bisocket per JBoss Messaging ci pare sono tre socket creati. Inizialmente ci sono 3, ma quando creo 5 produttori che il numero è aumentato a 15 (o 5 * 3 per quelli non matematicamente inclinati :)). Il motivo per cui sono allocati al 100% perché quando io mando tutti quei messaggi letti i fili dalla presa, mano fuori a Discussione Server, tornare alla lettura dalla presa (dove questo è sempre dati)

Quindi, la risposta breve è non c'è la piscina di governare questi fili. È possibile avere più di 1 accettano filo, ma sarebbe quasi mai avere un senso. Questo perché il suo lavoro è talmente minima di lettura dei dati, la mano fuori, leggere i dati ... Così hanno più thread sarebbe solo aggiungere in testa la sincronizzazione.

Altri suggerimenti

Questo è da http://download.oracle.com/javase /tutorial/uiswing/concurrency/worker.html ; Spero che aiuta.

Quando un programma swing ha bisogno per eseguire un compito a lungo in esecuzione, di solito utilizza uno dei thread di lavoro, noto anche come i thread in background. Ogni attività eseguita su un thread di lavoro è rappresentata da un'istanza di javax.swing.SwingWorker. SwingWorker stessa è una classe astratta; è necessario definire una sottoclasse, al fine di creare un oggetto SwingWorker; classi interne anonime sono spesso utili per la creazione di oggetti molto semplici SwingWorker.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top