2010-07-05 4 views
3

J'ai déployé une application Web sur un serveur. J'ai créé un script afin d'effectuer une charge sur l'application (test de stress). Le stress a généré différentes demandes en utilisant 10 threads. Je suis arrivé dans l'état suivant comme indiqué dans le gestionnaire de tomcat:Threads Tomcat Ready

Mémoire libre: 34.57 Mo Mémoire totale: 1166,43 MB mémoire Max: 1166.43 MB

fils Max: 200 le nombre de fil actuel: 59 thread courant occupé : 12 durée maximale de traitement: 60295419 ms temps de traitement: le nombre de requêtes de 1.8809264E7: 233217 nombre d'erreurs: 8100 Octets reçus: 4.11 MB Octets envoyés: 7493,59 MB

Selon ce statut 12 fils sont occupés pour l'entretien des demandes tandis que les 47 autres threads sont prêts. Il y a 34,57 Mo de mémoire disponible sur 1166,43 Mo initialement allouée. Je soupçonne que tomcat ne détruit pas les threads prêts non utilisés, la mémoire n'est pas libérée mais je ne suis pas sûr. Quelqu'un a-t-il d'autres idées? Est-ce que quelqu'un sait comment expirer des threads prêts?

Merci

Répondre

2

Ces 47 fils de discussion sont assis dans matous thread pool. Ils resteront en vie pour la durée de votre demande. La création et la destruction de threads peuvent prendre beaucoup de temps, alors avoir des threads en attente de travail dans le pool peut accélérer votre application plutôt que de créer un nouveau thread chaque fois que vous recevez une requête. Voir la documentation de Tomcat sur how to configure your thread pool (par exemple augmenter/diminuer les threads max).

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
    maxThreads="60" minSpareThreads="4"/> 
+0

Merci pour votre réponse. Pensez-vous que cela réglerait les problèmes de mémoire? Je veux dire pensez-vous que comme je l'ai fait puisque les threads prêts ne sont pas libérés, aussi la mémoire ne l'est pas? –

+0

@Clint Feher les threads eux-mêmes n'utiliseront pas trop de mémoire (sauf si vous utilisez d'énormes quantités de ThreadLocals, ce qui est peu probable). Vous devrez regarder dans d'autres parties du serveur pour trouver où la mémoire est utilisée, par ex. voir: http://stackoverflow.com/questions/185893 – krock

Questions connexes