Was würde dazu führen, ein java-Prozess erheblich über dem Xmx oder Xss-limit???

Habe ich 7 verschiedene java-Dämonen, die ich laufen (alle 7) auf 3 verschiedenen Servern. Der java-Befehlszeile hat -Xmx2048m-und -Xss1024k. Auf diesen 3 Servern, die alle 21-Prozessen zeigen, knapp 2,5 GB für VIRT-Größe in top und Spitze. RES Größe variiert von 300 bis 1,9 GB nach welcher Dämon es ist.

Dass alles so ist, wie es sein sollte.

Geben Sie den neuen server. Schnellere CPU, mehr RAM (16 GB statt 8 GB), etwas neuere java (1.6.0_10-b33 auf die alten Server, 1.6.0_31-b04 auf dem neuen server). Beide Systeme (und JVMs) sind 64bit.

Verschoben 2 der Dämonen auf den neuen server. Auf dem neuen server, der die gleiche Aufgabe, die Dämonen sind beide verbrauchen wesentlich mehr CPU (über einen core lohnt sich) und immer Weniger getan. (Verschoben aus 5110-Prozessoren auf den alten Systemen 5620s auf der neuen).

Ziemlich genau eine volle extra-core-CPU-Nutzung (GC-thread??) und reporting 5 GB VIRT-und 2 GB-RES für ein daemon und 10,5 GB VIRT-und 2 GB-RES für die anderen daemon.

Irgendwelche Ideen, was verursachen würde, java zu ignorieren (oder zu ignorieren, wenn das der Fall ist) den Speicher begrenzt?

  • VIRT ist der virtuelle Speicher, die keinen direkten Bezug zum heap space. Ich empfehle die Lektüre Antworten auf diese Frage: stackoverflow.com/questions/4893192/process-memory-vs-heap-jvm
  • Haben Sie versucht, mit der gleichen version von Java auf die neue Maschine? Sind Sie beide der gleichen bit-ness?
  • Xmx nicht angeben, wird die Speichernutzung der JVM; Sie gibt die maximale Größe des heap-pool, die nur einer der Speicher-pools verwendet, die von der JVM.
  • GC1, größere perm Raum. (wildy raten, aber passt zu den Versionen.) Sie können versuchen, zwingt den vm ' s verwenden Sie ein anderes gc.
  • Interessant, zu Lesen. Ich bin nicht gerade Speicher für Klammern Willen, die app ist schlecht unter Last und verbraucht 4 mal die VIRT drucken der Durchführung der exakt gleichen Aufgabe (gleicher Datensatz). Seit jede Erinnerung, die zeigt, bis in VIRT wurde malloc würde, und daher kann tatsächlich verwendet werden, in jedem moment, und Ihre Zeiger sind wahrscheinlich ( aber nicht notwendigerweise) ging durch den GC-thread, es scheint, dass es möglicherweise richtungsweisend sein, wenn nicht schuldig, von was auch immer verursacht schreckliche Leistung.
  • Sind Sie vielleicht laufen die anderen mit der -XX:+UseCompressedOops option und das neue nicht? (Diese option wird empfohlen, sowieso auf ein 64-bit system, wenn Sie nicht brauchen mehr als 32 GB heap space)
  • Ich werde Links gehen und vorschlagen, dass Sie überprüfen, dass alle DNS-Einträge für den neuen server passen Sie den Hostnamen, und haben rev-ip-lookups eingerichtet als gut.

InformationsquelleAutor Wayne Walker | 2012-05-13
Schreibe einen Kommentar