Apache Tomcat – OutOfMemoryError: PermGen space


java.lang.OutOfMemoryError: PermGen space to błąd serwera Apache Tomcat kiedy uruchomione aplikacje zużywają zbyt dużo pamięci. Dochodzi do sytuacji kiedy Apache Tomcat przestaje działać co jest niewybaczalne dla aplikacji działających produkcyjnie. Jak można temu zaradzić? W katalogu gdzie zainstalowany jest Tomcat należy utworzyć plik ./apache-tomcat-8.0.30/bin/setenv.sh i zmienić ilość przydzielonej pamięci:

export JAVA_OPTS="-Xms1024m -Xmx10246m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"

Ne serwerach VPS nie zawsze jest wystarczająca ilość pamięci RAM, szczególnie jeśli są to najtańsze opcje. Wtedy powyższa konfiguracja może nie wystarczyć i należy skonfigurować plik wymiany tzw. swapfile. W przeciwnym wypadku system usunie zasobożerne procesy co może spowodować, że kluczowe aplikacje przestaną działać.

Utworzenie wyzerowanego pliku swapfile o rozmiarze 524288 kb za pomocą komendy dd:

dd if=/dev/zero of=/swapfile bs=1024 count=524288

Ustawienie właściciela/grupy pliku oraz parametrów dostępu:

chown root:root /swapfile
chmod 0600 /swapfile

Ustawienie pliku wymiany:

mkswap /swapfile

Aktywacja pliku wymiany:

swapon /swapfile

Aby po restarcie systemu plik wymiany był dostępny należy dodać wpis:

/swapfile none swap sw 0 0

w pliku:

/etc/fstab

Aby sprawdzić czy plik wymiany został poprawnie skonfigurowany należy wykonać polecenie:

free -m

wynik:

root@edusession:/apache-tomcat-8.0.30/bin# free -m
             total       used       free     shared    buffers     cached
Mem:          1953       1831        122         45         17        136
-/+ buffers/cache:       1676        276
Swap:          511        446         65

ilość zużytego miejsca:

swapon -s

przykładowy wynik:

Filename                                Type            Size    Used    Priority
/swapfile                               file            524284  456800  -1

lub:

grep -i --color swap /proc/meminfo

przykładowy wynik:

root@edusession:/apache-tomcat-8.0.30/bin# grep -i --color swap /proc/meminfo
SwapCached:       136048 kB
SwapTotal:        524284 kB
SwapFree:          67488 kB

Błędy w wydajności można wykryć używając aplikacji Glowroothttps://javaleader.pl/2019/08/11/glowroot-application-performance-monitoring/


Leave a comment

Your email address will not be published.


*