powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / OutOfMemory
19 сообщений из 19, страница 1 из 1
OutOfMemory
    #38648956
_chaos_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем

Помогите понять в какую сторону двигаться с анализом проблемы. Есть сервер, на котором запущено 10-к java процессов (в основном в apache tomcat, есть jetty). Периодически возникает в OutOfMemory проблема, можно посмотреть crash-file в аттачменте. Что делать? В какую сторону копать?
...
Рейтинг: 0 / 0
OutOfMemory
    #38648982
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего PermGen переполнился и не смог расшириться, что странно. Попробуйте, для начала, увеличить его через
-XX:PermSize (начальный размер) и -XX:MaxPermSize (потолок)

Код: java
1.
2.
 PSPermGen       total 26112K, used 25448K [0x0000000710a00000, 0x0000000712380000, 0x0000000715c00000)
  object space 26112K, 97% used [0x0000000710a00000,0x00000007122da0c0,0x0000000712380000)



Есть ли OutOfMemoryException в логе?

Оно случайно ли не падает после обновления приложения в tomcat?
...
Рейтинг: 0 / 0
OutOfMemory
    #38649047
_chaos_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Да, проверил несколько крешей и везде не хватает PermGen. То есть нужно поиграться с -XX:PermSize (начальный размер) и XX:MaxPermSize и скорее всего с ratio
...
Рейтинг: 0 / 0
OutOfMemory
    #38649059
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_chaos_То есть нужно поиграться с -XX:PermSize (начальный размер) и XX:MaxPermSize
Зачем играться? Просто выставить начальный размер в нужное для работоспособности сервера значение, а максимальный с небольшим запасом для редеплоя модулей.

_chaos_и скорее всего с ratio
Нет. Ratio это отношение молодого и старого поколений. Им можно производительность GC тюнить. К этой проблеме отношения не имеет.
...
Рейтинг: 0 / 0
OutOfMemory
    #38649150
_chaos_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz_chaos_То есть нужно поиграться с -XX:PermSize (начальный размер) и XX:MaxPermSize
Зачем играться? Просто выставить начальный размер в нужное для работоспособности сервера значение, а максимальный с небольшим запасом для редеплоя модулей.

Так то оно так, но hotspot загружает в PermGen не все библиотеки сразу, а только часть из них. Нужно сделать полный разогрев приложения и тогда только будет ясно насколько большой нужен PermGen.

_chaos_и скорее всего с ratio
Нет. Ratio это отношение молодого и старого поколений. Им можно производительность GC тюнить. К этой проблеме отношения не имеет.

Да, я ошибся - это из другой оперы.
...
Рейтинг: 0 / 0
OutOfMemory
    #38649157
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_chaos_Так то оно так, но hotspot загружает в PermGen не все библиотеки сразу, а только часть из них. Нужно сделать полный разогрев приложения и тогда только будет ясно насколько большой нужен PermGen.

Скажу по секрету, даже библиотеки загружает не сразу, а отдельными классами. Но ход мысли верный. Разгореть. Посмотреть размер. Передеплоить, посмотреть рост и спад. Сделать выводы. Задать нужные размеры.
...
Рейтинг: 0 / 0
OutOfMemory
    #38649253
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczСкорее всего PermGen переполнился и не смог расшириться, что странно.
???
Смотрю в книгу (лог) и вижу фигу:

...Native memory allocation (malloc) failed to allocate...

1. причем тут PermGen ?
2. зачем увеличивать ?

IMHO
Вся память выделенна под Java memory (янг и олд heap'ы, permGen, скомпилированный Java код). Собственно программе-интерпретатору Java кода и нативнам библиотекам ничего не оставили.

Вывод:
УМЕНЬШИТЬ !!! Выделенную память под Java-машину, оставить хоть пару сотен мегабайт для нативной памяти.

Ровно это в .log файле и написано!

# Possible reasons:
# The system is out of physical RAM or swap space
# In 32 bit mode, the process size limit was hit
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Use 64 bit Java on a 64 bit OS
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
...
Рейтинг: 0 / 0
OutOfMemory
    #38649281
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Частично_ беру свои слова обратно, 64 бит Java я и не заметил. Но все равно, причем PermGen не очень понимаю.
...
Рейтинг: 0 / 0
OutOfMemory
    #38649283
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev...Native memory allocation (malloc) failed to allocate...
1. причем тут PermGen ?

Упало при попытке расширить поколение.

Leonid Kudryavtsev2. зачем увеличивать ?

Чтобы сразу застолбить достаточно количество.

Leonid KudryavtsevВся память выделенна под Java memory (янг и олд heap'ы, permGen, скомпилированный Java код). Собственно программе-интерпретатору Java кода и нативнам библиотекам ничего не оставили.

Я не вижу стеке интепретатора. Упал GC при попытке захваьтить ещё памяти. Он ещё в лог должен был сообщить исключение. Но его автор темы не привел.

Leonid KudryavtsevВывод:
УМЕНЬШИТЬ !!! Выделенную память под Java-машину, оставить хоть пару сотен мегабайт для нативной памяти.

JVM x64. Куча в под 4Гб. Чего бы оно падало?

Leonid KudryavtsevРовно это в .log файле и написано!

Странно. Советов много, а ты болдом только один выделил
...
Рейтинг: 0 / 0
OutOfMemory
    #38649296
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но не полностью. Посмотрел, сколько он хочет выделить:

...to allocate 441 974 784 bytes.... ( примерно 440 Mb)

И сколько ниже по логу:

/proc/meminfo:
MemTotal: 15 343 780 kB (16 Gb сервер)
MemFree: 85 924 kB (примерно 84 Mb)

Вывод в любом случае один и тот же. Нативная память в серваке похоже забита на пределе. Уменьшать память отданную под компоненты работающие на сервере. IMHO Возможно накладывается то, что parallel GC работает в кучу потоков и каждый поток хочет память выделить. Потоков много - требует много памяти для обработки. IMHO Уменьшить кол-во потоков parallel GC

Сложно читать лог с чужой железки, х.з. как сконфигурированной (((
...
Рейтинг: 0 / 0
OutOfMemory
    #38649297
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczСтранно. Советов много, а ты болдом только один выделил
Просто думал, что 32 разрядная VM. А там почти 2Gb под Old gen )))
...
Рейтинг: 0 / 0
OutOfMemory
    #38649300
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev/proc/meminfo:
MemTotal: 15 343 780 kB (16 Gb сервер)
MemFree: 85 924 kB (примерно 84 Mb)

Только хотел аналогичное запостить:
Memory: 4k page, physical 15343780k(85924k free), swap 0k(0k free)

Вообще 10 Java процессов на такой машине это как-то странно. Стоило наверное сгруппировать и что-то запхать в одну JVM.
...
Рейтинг: 0 / 0
OutOfMemory
    #38649338
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczУпало при попытке расширить поколение.
А где ты это увидел? Я увидел только

VM_ParallelGCFailedAllocation
PSOldGen
...
Рейтинг: 0 / 0
OutOfMemory
    #38649626
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
OutOfMemory
    #38649629
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Под виндой CDS вырубается если включена отладка или JVM выдано более -Xms4g.
Под линуксами, весьма вероятно, тоже.
Если сайты однотипные, то рекомендация запустить их в одной JVM может оказаться самой действенной.
...
Рейтинг: 0 / 0
OutOfMemory
    #38649636
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное у него 10 stand-alone web-app со встроенными Томкэтами и Джетти на разных
портах. В таком случае пожелание свести их в один сервер ставит для него ряд нетривиальных
задач. Нужно ковырять код.
...
Рейтинг: 0 / 0
OutOfMemory
    #38649643
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вру, в Java7 ограничение в четыре гигабайта снято:
Код: plaintext
1.
2.
3.
4.
5.
java -Xms5632m -XX:MaxPermSize=512m -Xshare:on -server -showversion -cp bin test
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode, sharing)

freeMem/maxMem: 5414 / 5444 MB.
test.java
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class test {

  public static void main( String[] args ) {
    Runtime rt = Runtime.getRuntime();
    long maxMemory = (rt.maxMemory() + 512 * 1024) / 1024 /1024;
    long freeMemory = (rt.freeMemory() + 512 * 1024) / 1024 / 1024;

    System.out.println( "freeMem/maxMem: " + freeMemory + " / " + maxMemory + " MB." );
  }
}

...
Рейтинг: 0 / 0
OutOfMemory
    #38649645
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ таком случае пожелание свести их в один сервер ставит для него ряд нетривиальных
задач. Нужно ковырять код.Для tomcat - только если делать через анус.
В server.xml прописывается нужное число слушателей, которые привязываются к нужным движкам.
Может быть и попарно (один слушатель для каждого движка) и один движок на все слушатели и произвольные комбинации.
В jetty, надо полагать, всё совершенно аналогично.
...
Рейтинг: 0 / 0
OutOfMemory
    #38649852
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevVM_ParallelGCFailedAllocation
PSOldGen
Вызов метода .expand()? Посмотрел исходники, возможно, я не прав и он "расширяет" для какой-то другой цели?
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / OutOfMemory
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]