2017-02-11 11 views
1

Я хочу понять состояние памяти, указанное командой cf app. , например. Если для моего приложения он возвращаетИспользование памяти CF командой cf app

state  since     cpu  memory  disk   details 

0 работает 2017-02-11 8:06:39 AM 18,2% 2,2 г 4G 200.3M 1Г

Что это 2.2g означает на самом деле? Потому что, когда я вижу свое приложение в newrelic, он показывает, что используется ~ 1GB. Я полагаю, что фактическое распределение также будет зависеть от некоторого другого параметра (xmx, memory calculatros?), Когда приложение запускается.

(Это весна загрузки приложений)

ответ

0

Он говорит, что один экземпляр приложения работает. Приложение было выделено/выделено 4 ГБ памяти, из которых (в то время, когда вы запустили cf app), приложение потребляло 2,2 ГБ общей памяти.

Если New Relic сообщает о 1 ГБ памяти, это может означать, что есть другие вещи, которые занимают другие 1,2 ГБ памяти.

Я бы начал с просмотра buildpack, которую вы используете. Используете ли вы стандартный пакет java buildpack или собственный сборщик, созданный вашей компанией? Добавляет ли buildpack какие-либо другие агенты? Что-то вроде AppDynamics (не говоря о том, что это преступник любыми способами) или что-то еще. Узнайте это и определите, сколько памяти эти дополнения потребляют.

Я бы предположил, что может сделать heapdump вашего исполняемого экземпляра. Вам понадобится ssh в контейнер для него. Головной дамп может составлять 2,2 ГБ, а диск, назначенный вашему приложению, составляет всего 1 ГБ, что будет представлять проблему. Есть решения, но это зависит от того, какую версию PCF вы используете.

Просто быстрый вопрос, можете ли вы использовать nashorn в своем приложении?

Надеюсь, это поможет!

+0

мы используем - https://github.com/cloudfoundry/java-buildpack#v3.7 – user3444718

+0

Вы используете стандартный buildpack. Итак, аддонов тогда нет. Вы можете попробовать ssh в контейнер экземпляра приложения и проверить файлы журнала и посмотреть, есть ли у вас какие-либо подсказки о том, что работает. Вам нужно будет сделать «heapdump», чтобы получить хороший внешний вид. Какую версию PCF вы используете? –

1

Когда вы запустите cf app <app-name>, на выходе отобразится память и использование ЦП, о которых сообщается ядром Linux для вашего контейнера. Последние версии CF получают это с использованием Guardian & runc, более старые версии с использованием Warden.

Концептуально вы можете думать о том, что он сообщает, как использование памяти для всех процессов, запущенных внутри контейнера. Это включает в себя процессы вашего приложения, но также пару очень маленьких процессов, установленных платформой (один из них является демоном SSH, который облегчает cf ssh). Если вы хотите узнать больше о том, что работает в вашем контейнере, я бы предложил выполнить cf ssh, а затем посмотреть ps aux или top.

Что касается вашего конкретного приложения, разница, которую вы видите, вероятно, связана с тем, что это приложение Java. Вам нужно убедиться, что вы смотрите на использование полной памяти для процесса , а не только на использование кучи. Куча - это только одна часть общего использования памяти для приложения Java, в которое также входят PermGen (1.7) или Metaspace (1.8), потоки, собственный код, прямая память и другая память, используемая самой JVM.

 Смежные вопросы

  • Нет связанных вопросов^_^