Ядро убивает процесс Java

У нас есть три Ubuntu 12.04, которые сбалансированы по нагрузке за nginx. Изначально мы установили tomcat7 с помощью apt-get, но столкнулись с проблемой, в которой, как мне кажется, ядро ​​убивает процесс Java из-за OOM. Я переключился на последний дистрибутив tomcat7 и установил его вручную. Тот же результат.

У нас включен файл подкачки. Первоначально у меня было установлено значение swapiness равное 0 для рекомендации размещенного провайдера. Я перешел на swapiness 60. Похоже, это все еще происходит.

Вот что я вижу в системном журнале:

Feb  8 06:35:38 processor1 kernel: [658920.280798] select 1 (init), adj 0, size 371, to kill    
Feb  8 06:35:38 processor1 kernel: [658920.280813] select 425 (rsyslogd), adj 0, size 497, to kill    
Feb  8 06:35:38 processor1 kernel: [658920.280827] select 18905 (bash), adj 0, size 1568, to kill    
Feb  8 06:35:38 processor1 kernel: [658920.280831] select 28556 (java), adj 0, size 63276, to kill    
Feb  8 06:35:38 processor1 kernel: [658920.280837] send sigkill to 28556 (java), adj 0, size 63276

Информация о системе:

  • 512 МБ ОЗУ
  • Включен файл подкачки 512 МБ.
  • Среда выполнения OpenJDK (IcedTea 2.4.4) (7u51-2.4.4-0ubuntu0.12.04.2)
  • 64-разрядная серверная виртуальная машина OpenJDK (сборка 24.45-b08, смешанный режим)
  • apache-tomcat-7.0.50
  • Память Java установлена ​​с -Xmx64m

Я вижу, как увеличивается и уменьшается использование памяти с помощью процесса Java. Я вижу, что происходит сборка мусора. Я буду следить за использованием и видеть падение оперативной памяти до <5 МБ, и произойдет сборка мусора, возвращая память до более 100 МБ свободной.

Нет ошибок в Tomcat7. Процесс просто прерывается ядром Linux как минимум один раз в день.

0
задан 9 February 2014 в 04:08

1 ответ

Я видел некоторые ситуации, когда OOM-киллер включался, но журнал, созданный OOM-киллером, не был похож на ваш вопрос. Поэтому я подумал, что что-то изменилось в OOM-killer в более новой версии ядра, поэтому я сделал livegrep для фразы «send sigkill to» , , вот результат . Как вы можете видеть, этот вид журналов исходит не от OOM-killer, а от Android-lowmem-killer. Это странно.

Зная источник проблемы, я очень скоро нашел этот и этот отчет об ошибках. Они объясняют ситуацию и выглядят так, как будто эта ошибка была исправлена ​​в дерзком ядре, но похоже, что она не была исправлена ​​в точном ядре.

Я не знаю, когда это будет исправлено в вашем конкретном ядре (которое, я думаю, 3.8), но вы можете обновить вашу установку 12.04 до ядра 13.10, установив пакеты аппаратного обеспечения с

sudo apt-get install --install-recommends linux-generic-lts-saucy xserver-xorg-lts-saucy libgl1-mesa-glx-lts-saucy

Конечно, если вы не используете xserver (без графического интерфейса пользователя) на своей машине, установите только новое ядро ​​с:

sudo apt-get install --install-recommends linux-generic-lts-saucy
0
ответ дан 9 February 2014 в 04:08

Другие вопросы по тегам:

Похожие вопросы: