mercredi 13 février 2013

PRINCIPE



La notion de WorkManager permet de gérer la distribution des threads sur le requetâge d’une ressource ou d’une application. Le pool de thread est unique pour l’instance Weblogic et le WorkManager régule la demande de thread sur ce pool fonction de contraintes et politiques.


Afin de monitorer l’allocation de ces threads, il est primordial de tracer l’évolution des métriques du pool de thread et des WorkManager associées aux applications. Il faut cependant connaitre les métriques à capturer et comprendre leur signification. Une petite application test a été développée pour l’occasion afin de découvrir le comportement du WorkManager et de ces métriques associées.

DOMAINE



Un domaine mono instance a été utilisé pour déployer l’application et le client requête cette instance unique pour simuler la charge. Un WorkManager de nom test_workmanager a été déployé sur l’instance avec une contrainte Max.

Lorsque le client requête l’application, celui-ci fait appel au test_workmanager pour récupérer des threads et exécuter la requête client.


MONITORING



Lors des tests, nous allons monitorer les types suivants :

com.bea:ServerRuntime=AdminServer,Name=ThreadPoolRuntime,Type=ThreadPoolRuntime
PendingUserRequestCount
The number of pending user requests in the priority queue. The priority queue contains requests from internal subsystems and users. This is just the count of all user requests.

com.bea:ServerRuntime=AdminServer,Name=test_workmanager,ApplicationRuntime=
Worker,Type=WorkManagerRuntime
PendingRequests
The number of waiting requests in the queue.


com.bea:ServerRuntime=${server},Name=MaxThreadsConstraint-3,Type=MaxThreadsConstraintRuntime
DeferredRequests
Number of requests that are denied a thread for execution because the constraint is exceeded.
ExecutingRequests
Number of requests that are currently executing.

Synthèse
ThreadPoolRuntime=PendingUserRequestCount,QueueLength
WorkManagerRuntime=PendingRequests
MaxThreadsConstraintRuntime=DeferredRequests,ExecutingRequests

MONITORING



Nous allons réaliser des charges successives de 1 à 5 clients simultanés qui appel l’application associé au WorkManager de nom test_workmanager. Ce WorkManager est paramétré avec une contrainte Max à 3 threads.

Nous allons monitorer les paramètres pending sur le pool de thread et sur le WorkManager, ainsi que sur le Mbean de la contrainte du WorkManager.

Le paramètre de Worker et la valeur retournée du singleton de l’application qui nous indique le nombre de requêtes simultané en cours d’exécution.



Flowchart: Alternate Process: 1Sur un test a 1 client, nous pouvons observer que le paramètre Pending du WorkManager représente le nombre de threads en cours d’exécution, et non pas en attente comme nous l’indique la documentation (The number of waiting requests in the queue).
                                                               
Flowchart: Alternate Process: 2Au fur et à mesure que l’on augmente le nombre de clients, le nombre de Worker augmente proportionnellement jusqu’à la valeur maximum définie dans la contrainte.

Flowchart: Alternate Process: 3Arrivés à 4, nous constatons que la métrique Pending du pool de thread augmente. Ce qui correspond bien à des requêtes en attente d’un Threads.

Flowchart: Alternate Process: 4Si le WorkManager ne nous permet pas de dissocier le nombre de requêtes en attente du nombre de requête en cours, le Mbean de la contrainte associée nous permet de faire le distinguo.

TEST MULTI APPLICATION



Ajoutons une 2 e application associée au même WorkManager, avec une deuxième charge client de nom bis. Dans ce cas de figure, nous doublons le nombre de requête sur le WorkManager.

En regard des chiffres ci-dessous, nous pouvons constater que les paramètres attribués au WorkMager sont globalisé sur l’ensemble des applications associées. La contrainte d’un Max à 3 est appliquée sur la somme des requêtes de 2 EJB associé au WorkManager.








0 commentaires:

AUTEUR

Ma photo
Carrières Sur Sein, Yvelines, France
Consultant Oracle (Ancien consultant BEA depuis 2001), je m’occupe des expertises sur les produits Oracle : SOCLE (Weblogic, Coherence, JRockit) SOA (Service Bus, SOA Suite, BPM)
MON CV

LABEL 3D

Blogumulus by Roy Tanck and Amanda Fazani

LABEL CLOUD

MAP

Locations of visitors to this page

AUTRES BLOG

LIVRES

MEMBRES