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.
- Rejestracja:prawie 12 lat
- Ostatnio:około 7 lat
- Postów:72

- Rejestracja:około 21 lat
- Ostatnio:około 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
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.
- Rejestracja:prawie 12 lat
- Ostatnio:około 7 lat
- Postów:72
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

- Rejestracja:około 21 lat
- Ostatnio:około 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
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.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.