Openfire Java: Nicht genügend Arbeitsspeicherfehler – Irgendwelche Lösungen?

Openfire Java: Nicht genügend Arbeitsspeicherfehler – Irgendwelche Lösungen?

Ich habe ein großes Problem damit, dass Openfire ab und zu abstürzt, weil der Speicher zu klein ist. Im Java-Protokoll habe ich das folgende Fehlerprotokoll. Die Probleme sind jedoch

  1. Openfire ist 32 Bit und ich kann es nicht als 64 Bit ausführen.
  2. Da der maximale Speicher nur 32 Bit beträgt, kann ich Openfire nur 4 GB geben.
  3. Mein System ist mit 32 GB RAM sehr leistungsstark, ich kann es also nicht weiter erhöhen
  4. Nur maximal 100 Benutzer verwenden Openfire, aber es scheint immer noch nicht zu funktionieren
  5. Ich habe alle 5 Minuten einen Cron-Job ausgeführt, um diesen Dienst zu überwachen und ab und zu neu zu starten

Gibt es Lösungen, wie man die Speichernutzung von OpenFire optimieren und Abstürze verhindern kann?

Fehlerprotokoll wie unten

#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 140 bytes for CHeapObj-new
# Possible reasons:
#   The system is out of physical RAM or swap space
#   In 32 bit mode, the process size limit was hit
# Possible solutions:
#   Reduce memory load on the system
#   Increase physical memory or swap space
#   Check if swap backing store is full
#   Use 64 bit Java on a 64 bit OS
#   Decrease Java heap size (-Xmx/-Xms)
#   Decrease number of Java threads
#   Decrease Java thread stack sizes (-Xss)
#   Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
#  Out of Memory Error (allocation.inline.hpp:44), pid=31239, tid=2735213424
#
# JRE version: 6.0_41-b02
# Java VM: Java HotSpot(TM) Server VM (20.14-b01 mixed mode linux-x86 )

---------------  T H R E A D  ---------------

Current thread (0xad2c7000):  JavaThread "Jetty-QTP-AdminConsole-16012" [_thread_in_vm, id=21077, stack(0xa3030000,0xa3081000)]

Stack: [0xa3030000,0xa3081000],  sp=0xa307f3d4,  free space=316k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x727990]

Antwort1

Openfire ist in Java geschrieben und nicht 32-Bit-spezifisch. Wenn Sie eine 64-Bit-JVM verwenden, wird es im 64-Bit-Modus ausgeführt und Sie können ihm so viel RAM zuweisen, wie Sie haben. Versuchen Sie, eine 64-Bit-JVM/JRE zu installieren.

verwandte Informationen