Nous avons débogué ce problème de serveur JBoss pendant un certain temps. Après environ 10 heures de travail, le serveur se lance dans des attaques de panique à 100% du processeur et s'arrête. Pendant ce temps, vous ne pouvez pas exécuter de nouveaux programmes, donc vous ne pouvez même pas kill -quit
pour obtenir une trace de pile. Ces charges élevées du processeur SYS à 100% durent de 10 à 20 secondes et se répètent toutes les quelques minutes.Mon serveur JBoss atteint 100% CPU SYS sous Linux; qu'est-ce qui peut causer ça?
Nous avons travaillé pendant un certain temps. Nous soupçonnons que cela a quelque chose à voir avec le GC, mais nous ne pouvons pas le confirmer avec un programme plus petit. Nous fonctionnons sur i386 32bit, RHEL5 et Java 1.5.0_10 en utilisant -client
et ParNew GC
.
Voici ce que nous avons essayé jusqu'à présent:
Nous avons limité l'affinité du processeur afin que nous puissions utiliser le serveur lorsque les coups de charge élevée. Avec
strace
nous voyons une boucle sans fin deSIGSEGV
, puis le retour sig.Nous avons essayé de reproduire ceci avec un programme Java. Il est vrai que SYS CPU% monte haut avec
WeakHashMap
ou lors de l'accès aux pointeurs NULL. Le problème était quefillStackTrace
a pris beaucoup de CPU utilisateur% et c'est pourquoi nous n'avons jamais atteint 100% SYS CPU.Nous savons qu'après 10 heures de stress, le GC devient fou et le GC complet prend parfois 5 secondes. Nous supposons donc que cela a quelque chose à voir avec la mémoire.
jstack
pendant cette période a montré que tous les fils étaient bloqués.pstack
pendant ce temps, a montré la trace de pile MarkSweep de temps en temps, donc nous ne pouvons pas être sûr à ce sujet aussi bien. L'envoiSIGQUIT
n'a donné aucun résultat: Java a jeté la trace de la pile APRES la fin de la période de chargement SYS%.
Nous essayons maintenant de reproduire ce problème avec un petit fragment de code afin que nous puissions demander à Sun.
Si vous savez ce qui le cause, s'il vous plaît laissez-nous savoir. Nous sommes ouverts aux idées et nous sommes désemparés, toute idée est la bienvenue :)
Merci pour votre temps.
JBoss s'exécute-t-il en mode veille dans ce problème ou exécutez-vous une application (avec le chargement d'utilisateur réel)? – Mork0075
3 ans plus tard ... et maintenant je cours exactement la même chose avec une build Maven et JDK 1.7.0_07, avec le noyau 3.6.2. Les noyaux précédents avec la même JVM ne présentent pas le problème. Bizarre. – Raman