2017-05-08 4 views
0

Ich versuche, eine Webanwendung mit Tomcat8 bereitzustellen. Wenn ich Tomcat-Instanz herunterfahre, erscheint folgende Nachricht in der Konsole.Tomcat8 Shutdown-Speicherfehler mit OpenJDK.1.8.0_131

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 6442450944, 0) failed; error='Cannot allocate memory' (errno=12) 
# 
# There is insufficient memory for the Java Runtime Environment to continue. 
# Native memory allocation (mmap) failed to map 6442450944 bytes for committing reserved memory. 
# An error report file with more information is saved as: 
# /home/my/path/project/apache-tomcat-8.0.28/bin/hs_err_pid7710.log 
The stop command failed. Attempting to signal the process to stop through OS signal. 
Tomcat stopped. 

Also wenn ich die Datei öffne, könnte ich unten Aussage finden.

--------------- P R O C E S S --------------- 

Java Threads: (=> current thread) 

Other Threads: 

=>0x00007f9e6000a000 (exited) JavaThread "Unknown thread" [_thread_in_vm, id=7711, stack(0x00007f9e69 497000,0x00007f9e69598000)] 

VM state:not at safepoint (not fully initialized) 

VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event]) 
[0x00007f9e60007f30] Heap_lock - owner thread: 0x00007f9e6000a000 

GC Heap History (0 events): 
No events 

Deoptimization events (0 events): 
No events 

Internal exceptions (0 events): 
No events 

Events (0 events): 
No events 

Was bedeutet VM state: not at safe point? Hier ist mein Befehl, Java auszuführen.

VM Arguments: 
jvm_args: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.net.preferIPv4Stack=true -Xms6144m -Xmx8192m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -Djava.awt.h eadless=true -verbose:gc -Xloggc:/home/my/path/project/apache-tomcat-8.0.28/logs/gc.log -Djava .library.path=/home/my/path/project/lib -Djava.endorsed.dirs=/home/my/path/project/apache-tomcat-8.0.28/endorsed -Dcatalina.base=/home/my/path/project/apache-tomcat-8.0.28 -Dcatalina.home=/home/my/path/project/apache-tomcat-8.0.28 -Djava.io.tmpdir=/home/my/path/project/apache-tomcat-8.0.28/temp 
java_command: org.apache.catalina.startup.Bootstrap stop 
java_class_path (initial): /home/my/path/project/apache-tomcat-8.0.28/bin/bootstrap.jar:/home/my/path/project/apache-tomcat-8.0.28/bin/tomcat-juli.jar 
Launcher Type: SUN_STANDARD 

Ich sehe, dass dies nicht auf den Web-Service wirkt. Ist es in Ordnung zu ignorieren?

Wie kann ich diesen Fehler richtig behandeln?

FYI,

  • tomcat: 8.0.28
  • jdk: OpenJDK.1.8.0_131
  • OS: GNU/Linux x86_64

Antwort

0

Sie auf Ihrem System aus virtuellem Speicher ausgeführt wird. Sie müssen die Speicherkonfiguration Ihres Systems veröffentlichen. Mit diesen Optionen sollten Sie mindestens 10 GB physischen Speicher haben. Auch die JVM-Optionen des Stopp-Skript, und der Ausgang des

free -m 

Mit Ihren aktuellen Optionen

-Xmx8192m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m 

Means Tomcat allein verwenden, wird mehr als 8960 MB virtueller Speicher (Sie haben um Codecache, Stacks und nativen Speicher hinzuzufügen). Das Stopp-Skript benötigt zusätzlichen Speicher (hoffentlich haben Sie verschiedene JVM-Optionen) und die anderen Prozesse auf Ihrem Rechner. Das Tauschen einer JVM ist keine gute Idee, da der Garbage Collector regelmäßig über den gesamten Heap läuft.

Welcher VM-Zustand: nicht am sicheren Punkt bedeutet (sic)?

Sie bestimmte Punkte in der Ausführung eines Java-Programms, wenn der Status der Ausführung der VM bekannt ist. Ich empfehle Safepoints: Meaning, Side Effects and Overheads für Details.