2012-03-13 6 views
2

J'ai une application Struts 1.3 exécutée dans JBOSS AS 5.1. Nous avons défini 2000 Threads HTTP dans le fichier server.xml pour le Connecteur HTTP et alloué environ 2 Go de RAM dans le tas JVM à JBOSS dans le fichier run.conf. Le système a un total de 4 Go de RAM et la RAM restante est utilisée par d'autres applications.JBOSS se bloque lorsque la limite maxThreads est atteinte

Chaque fois que mon système est touché avec plus de 2000 requêtes simultanées, Jboss se bloque et cesse de fonctionner. Je ne reçois pas d'exceptions sur la console ou d'erreurs de mémoire de toute sorte, il se bloque.

Comment résoudre ce problème? Dois-je mettre mod_cluster ou quelque chose en face de JBOSS? Ou devrais-je juste allouer plus de threads au connecteur, si oui, comment puis-je savoir quel ratio utiliser entre la mémoire et maxThreads sur le connecteur HTTP?

Répondre

5

2000 est un nombre très élevé. Si vous en avez vraiment besoin pour gérer 2000 requêtes simultanées, vous devrez configurer plusieurs instances et répartir la charge de manière égale entre les instances. Vous pouvez configurer un équilibreur de charge ou apache + mod_jk devant jboss.

La quantité de mémoire à utiliser dépend de l'application. Le nombre d'instances à utiliser dépendra du bon fonctionnement des instances en charge et du temps de réponse nécessaire.

+0

Voulez-vous dire configurer plusieurs instances sur le même système? Si oui, pourquoi cela serait-il bénéfique sur une seule instance de JBOSS? Il s'agit d'une application Web d'entreprise. La gestion de plus de 2000 utilisateurs est donc une nécessité. Aussi pourriez-vous recommander un outil que je pourrais utiliser pour déterminer combien de mémoire chaque composant de mon application utilise? – user1266369

+0

@ user1266369 Vous n'avez pas besoin de 2 000 threads de connecteur pour gérer 2 000 utilisateurs. À moins que l'application fasse un usage intensif de _very_, 200 est probablement plus réaliste. Pour plus de débit, plus d'espace RAM/tas aidera et il existe de nombreuses façons d'accorder le connecteur pour de meilleures performances. – Mikaveli

+0

Si c'est une application Web d'entreprise, vous ne voulez pas une instance desservant tous les utilisateurs. Que se passe-t-il lorsque cette instance unique tombe en panne? Le basculement est certainement une raison pour configurer plusieurs instances. En outre, si l'utilisation du processeur sur ce serveur augmente, vous pouvez toujours tenir un autre serveur et déplacer la seconde instance vers ce serveur. – bubbly

Questions connexes