Tomcat OutOfMemory

0

Witam, mam problem z błędem OutOfMemory na serwerze Tomcat. Pojawia się on podczas uruchamiania tylko gdy wrzucę nowego war'a. Po wyrzuceniu tego błędu Tomcat nie zatrzymuje się ale też nie ma możliwości odpalenia jakiejś aplikacji. Gdy ubije proces i ponownie uruchomię to wszystko jest ok (dodam że nie ma możliwości zatrzymania go - zawiesza się).
http://4programmers.net/Pastebin/5218
Tomcat8
Java 8 32 bit
System 32bit
Initial memory pool: 1450 MB
Maximum memory pool: 1450 MB
Proszę o pomoc w jaki sposób mogę w ogóle sprawdzić gdzie leży błąd.

0

A ile masz ramu? Bo Metaspace (dawny PermGen) nie jest nieskończony. Wrzucenie nowego wara oznacza załadowanie tam wszystkich klas i może tak być że skonczy się miejsce. Metaspace o ile nie ustawisz jakiegoś -XX:MaxMetaspaceSize=XYZ niby sam się powiększa, ale tylko w granicach możliwości. Skoro masz system 32 bit to zgaduje że po prostu fizycznie brakuje ci ramu, szczególnie skoro ustawiasz początkowy heap na 1,5GB więc pewnie niewiele ramu w ogóle zostaje.

0

Na tym serwerze stoją 3 aplikacje (wszystkie o wielkości ok. 50MB), czy to dużo na taką ilość ramu? Myślisz że powiększenie metaspace powinno pomóc? Więcej niż 1450Mb nie da sie ustawić bo system java jest 32-bitowa. Pytanie też dlaczego zawsze scenariusz wygląda tak samo:

  • zatrzymanie serwera
  • podmienienie jednego war'a
  • start serwera
  • out of memory
  • ubicie procesu
  • start serwera
    Jak nie podmienie war'a to żaden błąd nie jest wyrzucany i aplikacja może chodzić bardzo długo bez błędów outofmemory
1

Bo "podmiana wara" = załadowanie klas z tego wara do metaspace więc nagle masz tam 2 razy wiecej klas ;)
Ja bym sugerował zrobić coś odwrotnego, zmniejsz heaspace :) Bo heap to nie jest to samo co metaspace/permgen i ja myśle że ustawiając taki duży heap po prostu uniemożliwiasz JVMowi powiększenie metaspace kiedy jest taka potrzeba bo po prostu nie może zaalokować więcej pamięci.

1 użytkowników online, w tym zalogowanych: 0, gości: 1