Question

J'écris une application java qui fonctionne dans Tomcat, sur un matériel multicœur. L'application exécute un algorithme et renvoie la réponse à l'utilisateur. Le problème est que même quand je lance deux requêtes en même temps, le processus tomcat utilisations au plus un noyau CPU.
Pour autant que je comprends chaque demande dans Tomcat est exécuté en thread séparé, et machine virtuelle Java devrait fonctionner chaque fil sur le noyau CPU séparé.

Quel pourrait être le problème qui limite la machine virtuelle Java ou Tomcat ne pas utiliser plus d'un noyau?

Merci à l'avance.

Était-ce utile?

La solution

Êtes-vous sûr que deux threads sont créés. Vous pouvez simplement imprimer le nom du fil comme un test rapide.

Qu'est-ce qui se passe si vous exécutez l'algorithme dans une application autonome?

Autres conseils

Toute la gestion du processeur sera pris en charge par le serveur lui-même. Il n'est pas obligatoire que si vous passez deux demandes, il doit utiliser deux CPU.

Êtes-vous d'exécuter des blocs / méthodes synchronisées qui obligeraient exécution en série? La configuration du connecteur tomcat dans les contrôles server.xml la piscine du fil de la demande - mais la valeur par défaut est de 200 fils, IIRC

.

Voici la procédure à faire un équilibrage de charge dans tomcat http: //tomcat.apache.org/tomcat-5.5-doc/balancer-howto.html

Je pense que cela va fonctionner avec Tomcat 6 aussi, comme ils ont mentionné équilibreur webapp est livré avec tomcat 5.0 et versions ultérieures.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top