Я обновил свою систему с 13.04 до 13.10, и я больше не мог запускать Cassandra, получая ошибку нехватки памяти, поэтому куча заполнялась, хотя все, что я делал в тот момент, это запускал сервер.
Я вошел и увеличил максимальный размер кучи с -Xmx1992m (по умолчанию) до -Xms2500m.
Мне интересно, зачем это нужно делать? Может быть, память немного уменьшилась между запуском ядра Linux 3.5.0 и переходом на ядро 3.11.0, и может ли это повлиять на Cassandra? (то есть, скажем, я «потерял» 200 МБ, теперь он выделял 1992 МБ вместо 2192 МБ с предыдущим ядром, может быть??)
Меня беспокоит то, что каждый раз, когда я обновляюсь, я могу столкнуться с такой проблемой, если я не заставлю максимальный размер кучи равным фиксированному числу (вместо того, чтобы позволить сценарию определять МБ для динамического использования). Плюс, я просто не могу продолжать увеличивать предел навсегда. Моя оперативная память ограничена... (очевидно.)
При запуске Cassandra показывает следующее (разбито на 3 строки, чтобы было легче читать):
xss = -ea -javaagent:bin/../lib/jamm-0.2.5.jar -XX:+UseThreadPriorities
-XX:ThreadPriorityPolicy=42 -Xms1994M -Xmx2500M -Xmn400M
-XX:+HeapDumpOnOutOfMemoryError -Xss256k
Обновлять:
Арх! Он все еще запускал OpenVMS, потому что переменная $JAVA_HOME, указывающая на /usr/lib/jvm/default-java (она определена в /etc/environment):
JAVA_HOME=/usr/lib/jvm/default-java
И каким-то образом он был настроен обратно на OpenVMS. Хотя я изменил программную ссылку /etc/alternatives/java, и, таким образом, java -version
в моей командной строке «работал нормально» (возвращая то, что я ожидал), сценарий запуска Cassandra использует переменную $JAVA_HOME
!
Поэтому я проверил список доступных виртуальных машин с помощью:
ls -l /usr/lib/jvm
lrwxrwxrwx 1 root root 24 Apr 27 2012 default-java -> java-1.7.0-openjdk-amd64
drwxr-xr-x 4 root root 4096 Feb 23 17:54 java-1.5.0-gcj-4.8-amd64
lrwxrwxrwx 1 root root 20 Sep 2 2012 java-1.6.0-openjdk-amd64 -> java-6-openjdk-amd64
lrwxrwxrwx 1 root root 20 Jul 3 2013 java-1.7.0-openjdk-amd64 -> java-7-openjdk-amd64
drwxr-xr-x 5 root root 4096 Oct 7 2012 java-6-openjdk-amd64
drwxr-xr-x 3 root root 4096 Oct 7 2012 java-6-openjdk-common
drwxr-xr-x 5 root root 4096 Sep 21 20:06 java-7-openjdk-amd64
drwxr-xr-x 8 root root 4096 Sep 18 21:18 java-7-oracle
И выполнил следующие две команды, чтобы запустить Oracle:
sudo rm /usr/lib/jvm/default-java
sudo ln -s java-7-oracle /usr/lib/jvm/default-java
Однако это не изменило тот факт, что мне по-прежнему нужно иметь большой верхний предел с точки зрения памяти.
/usr/lib/jvm/default-java/bin/java
, и похоже, что это OpenJVM. Аррргх! - person Alexis Wilke   schedule 25.02.2014