У меня есть жалоба на то, что мое серверное приложение рушится при высокой нагрузке.
Это веб-приложение, работающее в Tomcat 5
.
Я вижу дампы потоков, и я вижу, что есть ошибка OutOfMemory
Событие дампа 1TISIGINFO "systhrow" (00040000) Подробности
"java/lang/OutOfMemoryError" "Не удалось создать поток: retVal -1073741830, errno 12" > получен 1TIDATETIME Дата: 2012/07/17 в 20:03:17 1TIFILENAME > Javacore имя файла: C:\ServerApplication\Tomcat5\bin\javacore.34545719.4646464.4172.0003.txt
Информация о куче следующая:
Maximum Java heap size : 1500m
Initial Java heap size : 256m
Это конфигурация начального и максимального размера кучи (32-битная java)
Я также вижу, что доступно свободное пространство кучи
1STHEAPFREE Bytes of Heap Space Free: 2D19F3C0
1STHEAPALLOC Bytes of Heap Space Allocated: 5DC00000
Это объем свободного пространства 750 МБ, не так ли?
И из анализа метода потока я вижу, что число потоков 695
, из которых 49%
равно java/lang/Object.wait(Native Method)
и 39%
находится в sun/misc/Unsafe.park(Native Method)
Также я вижу, что это NO JAVA STACK 1%
не уверен, что это значит.
Также 0 тупиков зашли в тупик, а 2%
- Runnable.
Я не уверен, как интерпретировать эту информацию или как продолжить здесь, чтобы обнаружить основную причину. Любая помощь по этому поводу?