Bonjour,
J'effectue des tests en charge sur une webapp qui utilise Cocoon.
Je souhaiterais au moins atteindre 800 utilisateurs simultanés et pour le
moment je ne suis arrivé qu'à 450 (j'ai déjà gagné un facteur 2 en mettant
<parameter name="use-persistent-cache" value="false"/> dans le transient store).
Lors de la montée en charge il arrive un moment, au bout d'une demi-heure, où
on assiste à un brusque ralentissement des traitements effectués par chaque
thread traitant les requêtes HTTP provoquant une activité permanente par tous
les threads disponibles (150) et donc un remplissage progressif de la file
d'attente de traitement provoquant au final une erreur : ThreadPool.logFull.
Lorsque ce seuil est atteint, on remarque que globalement le serveur ne fait
plus grand chose (la CPU est peu utilisée) et que la plupart des threads
passent beaucoup de temps à obtenir et libérer une ressource par
l'intermédiaire de la classe :
org.apache.avalon.excalibur.pool.ResourceLimitingPool
en appelant respectivement les méthodes get() et put().
Le constructeur de cette classe dispose des paramètres suivants :
* factory - The ObjectFactory which will be used to create new Poolables as
needed by the pool.
* max - Maximum number of Poolables which can be stored in the pool, 0 implies
no limit.
* maxStrict - true if the pool should never allow more than max Poolable to be
created.
* blocking - true if the pool should cause a thread calling get() to block when
Poolables are not currently available in the pool.
* blockTimeout - The maximum amount of time, in milliseconds, that a call to
get() will block before an exception is thrown. A value of 0 implies an
indefinate wait.
* trimInterval - The minimum interval with which old unused poolables will be
removed from the pool. A value of 0 will cause the pool to never trim poolables.
cf :
http://excalibur.apache.org/apidocs/org/apache/avalon/excalibur/pool/ResourceLimitingPool.html
Je voudrais savoir comment on peut modifier ces paramètres ?
Est-ce que dans Cocoon on a blocking=true et blockTimeout=0 par exemple ?
Tout conseil ou éclaircissement sur la question sera le bienvenue ...
Vincent Mahé
---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:[EMAIL PROTECTED]
Autres commandes : mailto:[EMAIL PROTECTED]