Ograniczenie przestrzeni Java Heap dla play Framework globaly
Mam bardzo stary system linux i zainstalowane java i play framework. Kiedy uruchamiam Javę dostaję:
java -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
Więc ograniczyłem przestrzeń java sterty w aplikacji.conf:
jvm.memory=-Xmx256M -Xms256M
Z tym ustawieniem mogę uruchomić play test, play run itp....
Ale nie mogę uruchomić:
play dependencies
~ _ _
~ _ __ | | __ _ _ _| |
~ | '_ \| |/ _' | || |_|
~ | __/|_|\____|\__ (_)
~ |_| |__/
~
~ play! 1.2.1, http://www.playframework.org
~
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
Czy istnieje globalny plik konfiguracyjny lub zmienna środowiskowa, w której mogę ograniczyć globalnie przestrzeń java heap dla frameworka play?
Aktualizacja: Również następujące nie jest praca:
play dependencies -Xmx256M -Xms256M
~ _ _
~ _ __ | | __ _ _ _| |
~ | '_ \| |/ _' | || |_|
~ | __/|_|\____|\__ (_)
~ |_| |__/
~
~ play! 1.2.1, http://www.playframework.org
~
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
Aktualizacja 2:
Pamięć:
ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 38912
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Granice:
cat /proc/meminfo
MemTotal: 4139312 kB
MemFree: 332988 kB
Buffers: 105252 kB
Cached: 1705644 kB
SwapCached: 4 kB
Active: 2566216 kB
Inactive: 625032 kB
HighTotal: 786432 kB
HighFree: 1728 kB
LowTotal: 3352880 kB
LowFree: 331260 kB
SwapTotal: 4192956 kB
SwapFree: 4168224 kB
Dirty: 368 kB
Writeback: 0 kB
Mapped: 1672180 kB
Slab: 570864 kB
CommitLimit: 6262612 kB
Committed_AS: 4075144 kB
PageTables: 19884 kB
VmallocTotal: 303096 kB
VmallocUsed: 10400 kB
VmallocChunk: 292648 kB
BR,
Rene
9 answers
Play nie wydaje się odbierać jvm.ustawienia pamięci dla Zależności lub nawet polecenia test. Jednym ze sposobów wymuszenia użycia określonych ustawień JVM jest użycie _JAVA_OPTIONS.
Na przykład:
export _JAVA_OPTIONS="-Xms800m -Xmx1500m -XX:PermSize=64m -XX:MaxPermSize=256m"
play test
Lub
play deps
I powinieneś zobaczyć
~ _ _
~ _ __ | | __ _ _ _| |
~ | '_ \| |/ _' | || |_|
~ | __/|_|\____|\__ (_)
~ |_| |__/
~
~ play! 1.2.3, http://www.playframework.org
~ framework ID is test
~
~ Running in test mode
~ Ctrl+C to stop
~
Picked up _JAVA_OPTIONS: -Xms800m -Xmx1500m -XX:PermSize=64m -XX:MaxPermSize=256m
Listening for transport dt_socket at address: 8000
Zauważ, że to spowoduje zastosowanie tych ustawień do wszystkich programów java uruchomionych na tym terminalu, gdzie ustawiony jest _java_options.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-14 07:56:03
Po googlowaniu znalazłem tę dyskusję. Problem w tym, że mój system Linux działa w kontenerze openvz:
powodem, dla którego Java narzeka, jest to, że podczas uruchamiania widzi, że maszyna ma więcej niż 2 GB PAMIĘCI RAM, więc uruchamia się w trybie serwera, który próbuje przeznaczyć całą pamięć, która następnie nie powiedzie się, ponieważ znajduje się wewnątrz VPS.
Mogę naprawić problem uruchamiania Javy zmieniając /usr/java / jdk1.6.0_26/jre/lib/i386 / jvm.cfg from:
-client IF_SERVER_CLASS -server
-server KNOWN
-hotspot ALIASED_TO -client
-classic WARN
-native ERROR
-green ERROR
Do:
#-client IF_SERVER_CLASS -server
-client KNOWN
-server KNOWN
-hotspot ALIASED_TO -client
-classic WARN
-native ERROR
-green ERROR
Teraz mogę uruchomić dowolną komendę play. Być może pomaga to innym osobom mającym podobne problemy związane z wirtualizacją kontenerów.
BR, Rene
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-21 06:52:43
Zwykle można podać argumenty wiersza poleceń Javy podczas wywoływania play, używając następującego wzorca.
play run <appname> -Xmx256M -Xms256M
Jednakże, patrząc na kod Pythona dla Komendy play run
i play dependencies
, wywołują one Javę na różne sposoby.
Polecenie play dependencies wywołuje Javę bez przechodzenia przez polecenia-X (z jakiegoś powodu przechodzi przez polecenia-D, ale nie przez-X). Dlatego nic nie można zrobić, poza edycją pliku deps.py
w Framework/Pym / play / komendy i twarde kodowanie ustawień-Xmx i-Xms do tego pliku.
Nie jest to rozwiązanie długoterminowe, i sugerowałbym, abyś zebrał bilet na grę, aby te ustawienia mogły być odczytywane z linii poleceń lub z aplikacji.conf, ale na razie widzę to podejście jako jedyną opcję.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-20 15:01:56
Po prostu wpadłem na to na moim laptopie z Fedorą i używaniem Play 2.0 po prostu uruchamiając interaktywną powłokę. Zauważyłem, że skrypt budowania ustawia wartości pamięci domyślnie na dość wysokie.
Aby to naprawić musiałem edytować skrypt $play_dir/framework/build
i ręcznie zmieniać wartości, na końcu skryptu wykonuje się następujące czynności aby uruchomić:
java ${DEBUG_PARAM} -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M ...
Wystarczy odpowiednio zmienić wartości-Xmx/ - Xms (i ewentualnie permgen).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-04 04:33:46
Twój komputer nie ma wystarczającej ilości pamięci RAM do uruchamiania Javy. Java potrzebuje co najmniej 64MB RAM.
Zauważ, że nie możesz dodać wolnej pamięci do swojego komputera przez podanie -Xms
do Javy: Java nie może dodawać modułów pamięci do płyty głównej. -Xms
po prostu mówi Javie, ile dostępnej pamięci RAM ma zająć. Jeśli to się nie powiedzie (=system operacyjny zwróci błąd, gdy Java spróbuje go przydzielić), pojawi się powyższy błąd.
Zgaduję, że nie ma miejsca na wymianę. Spójrz na wyjście cat /proc/meminfo
. Lub masz ulimit
zestaw co ogranicza ilość pamięci, jaką może przydzielić każdy proces (spróbuj ulimit -a
sprawdzić).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-20 14:52:19
W Play 2.2 i Java 7, to jest to, co używałem.
$ target/universal/stage/bin/foo -mem 256 -J-server
Po szczegóły-mem, Zobacz:
$ target/universal/stage/bin/foo -h
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-24 00:51:13
Wygląda na to, że komenda play
jest skryptem Pythona, który wywołuje inne moduły Pythona, które ostatecznie wywołują komendę java
jako podproces.
Patrząc na kod źródłowy kodu uruchamiającego dla polecenia dependencies
, wydaje się, że nie ma żadnej logiki ładującej zmienną środowiskową ani niczego innego, co określałoby maksymalny rozmiar sterty jako argument -Xmx
. Innymi słowy, Kod Pythona Z Play, który wywołuje JVM w tym skrypcie nie można określić domyślnego maksymalnego rozmiaru sterty.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-20 14:45:48
Miałem do czynienia z tym samym problemem. Spróbuj zwiększyć --XX: MaxHeapSize do wyższej alokacji. Oto moja konfiguracja w path / to / framework / build
java -Xms512M -Xmx1300M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M -XX:MaxHeapSize=512m...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-29 18:10:07
Play nie rozpoznaje opcji-XX. Zamiast tego użyj -DX.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-09 07:30:24