2011-08-01 4 views
0

Я задал этот before, но не получил никакого ответа - может быть, это было слишком долго - поэтому я перефразировать вопрос:
Через 3 дня от запуска приложения, которое использует Apache Axis2 v.1.5.4 , OutOfLangMemoryError начинает происходить (размера кучи = 2048 МБ), что приводит либо ухудшая сервер приложений (WAS v.7.0.0.7) производительности или остановку логического сервера (процесс все еще существует).
OutOfLangMemoryError вызвано Apache Axis2

По некоторым причинам, я должен поставить таймера = 1 секунда на процесс вызова веб-службы, в пик времени, интервалы времени происходят (либо в учреждении или чтения).

Глядя в javacores и heapdumps выброшенных на сервере:
кажется, что есть висели Axis2 темы:

 
"Axis2 Task" TID:0x00000000E4076200, j9thread_t:0x0000000122C2B100, state:P, prio=5. 
at sun/misc/Unsafe.park(Native Method) 
at java/util/concurrent/locks/LockSupport.park(LockSupport.java:173) 
at java/util/concurrent/SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:433) 
at java/util/concurrent/SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:334) 
at java/util/concurrent/SynchronousQueue.take(SynchronousQueue.java:868) 
at java/util/concurrent/ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:957) 
at java/util/concurrent/ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:917) 
at java/lang/Thread.run(Thread.java:735) 

Как гарантировать, что Axis2 потоки прекращаются, то ли ответ был возвращен или нет, то есть произошло исключение?

ответ

1

Я бы рекомендовал вам указать Visual VM 1.3.2 со всеми плагинами, установленными в вашем приложении. Он покажет вам, что происходит в вашей памяти кучи памяти и всех запущенных потоках. Я не могу дать вам ответ, но Visual VM сделает процесс более прозрачным.

+0

Спасибо duffymo, такой полезный инструмент, но моя главная задача - предотвратить проблему на этапе разработки, используя Axis2 API, потому что она должна быть там, я попытался использовать методы Stub, ServiceClient, Transport и ConfigurationContext cleanup() , но не повезло. Возможно, я неправильно использую API. – guirgis

+0

Используйте Visual VM, чтобы указать на свою машину разработки и запустить приложение локально. Я не понимаю вашего мнения. – duffymo

+0

Я использовал jca (http://www.alphaworks.ibm.com/tech/jca), который похож на визуальную виртуальную машину, для анализа дампов ядра Java/кучи, кажется, что проблема вызвана Axi2. Могу сказать, я спрашивал, есть ли какой-нибудь API, который гарантирует, что все ресурсы будут очищены (память, потоки). Я нашел 29,459 потоков с состоянием «припаркованным» во время проблемы. – guirgis

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