2013-10-13 4 views
0

Недавно мы обновили наше обновление для Java 7 7 до обновления 25, на SunOS 5.10 Generic_144488-17 sun4v sparc SUNW, Sun-Blade-T6340 машина. Сразу после обновления у нас появились серьезные проблемы с производительностью из нашего приложения, которые были развернуты на WebLogic 11g.Проблема с производительностью после обновления до обновления на Java 7 25 на SunOS 5.10

Во время анализов потоков мы обнаружили, что следующий код вызывает сброс потока, который останавливает приложение. Этот код выполняется каждые 30 секунд: Dump

import java.lang.management.ManagementFactory; 
import java.lang.management.ThreadInfo; 
import java.lang.management.ThreadMXBean; 

ThreadMXBean threadBean = ManagementFactory.getThreadMXBean(); 
ThreadInfo[] allThreadsList = threadBean.getThreadInfo(threadBean.getAllThreadIds(), isObjectMonitorUsageSupported, isSynchronizerUsageSupported); 

темы:

at sun.management.ThreadImpl.dumpThreads0(Native Method) 
at sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:440) 

at sun.reflect.GeneratedMethodAccessor620.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75) 
at sun.reflect.GeneratedMethodAccessor265.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279) 
at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112) 
at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46) 
at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237) 
at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138) 
at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252) 
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 
at weblogic.management.jmx.mbeanserver.WLSMBeanServerInterceptorBase$16.run(WLSMBeanServerInterceptorBase.java:449) 
at java.security.AccessController.doPrivileged(Native Method) 
at weblogic.management.jmx.mbeanserver.WLSMBeanServerInterceptorBase.invoke(WLSMBeanServerInterceptorBase.java:447) 
at weblogic.management.mbeanservers.internal.JMXContextInterceptor.invoke(JMXContextInterceptor.java:263) 
at weblogic.management.jmx.mbeanserver.WLSMBeanServerInterceptorBase$16.run(WLSMBeanServerInterceptorBase.java:449) 
at java.security.AccessController.doPrivileged(Native Method) 
at weblogic.management.jmx.mbeanserver.WLSMBeanServerInterceptorBase.invoke(WLSMBeanServerInterceptorBase.java:447) 
at weblogic.management.mbeanservers.internal.SecurityInterceptor.invoke(SecurityInterceptor.java:444) 
at weblogic.management.jmx.mbeanserver.WLSMBeanServer.invoke(WLSMBeanServer.java:323) 
at javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:292) 

Кто-нибудь знает, почему это происходит только после обновления для обновления 25? Я не нашел комментариев об этом изменении.

Спасибо всем.

+0

Почему вы это делаете? Не станет ли очевидным исправить это, если вы остановитесь? –

ответ

0

Я не знаю, в чем причина этого ... но одним из возможных решений является использование dumpAllThreads вместо того, что вы сейчас делаете.

Но это также вызывает недоумение, что ваш производство код делает это ... каждые 30 секунд. Взятие дампа потока включает в себя создание моментального снимка кадров стека каждого потока. Это может быть дорого, особенно если у вас много живых потоков. Если бы вы могли сказать, чего вы пытаетесь достичь, возможно, мы могли бы предложить легкую альтернативу.

+0

Вырезанный код выше - это устаревший код, который будет удален. Я пытаюсь понять, почему этот код влияет на мое приложение только после обновления до обновления Java 7 25. –

+0

@MaximKirilov - Как я уже сказал, я не могу ответить на это. Я не мог найти отчет об ошибке, который кажется актуальным. Однако есть ресурсы, которые вы можете использовать, чтобы понять это сами. 1) Попробуйте разблокировать между u7 и u25 в свою очередь, чтобы выяснить, когда изменяется поведение. 2) Найдите/просмотрите список всех ошибок, измененных в этой версии. 3) Посмотрите, можете ли вы воспроизвести проблему на другой платформе. 4) Изучите исходный код OpenJDK Java 7 * history *, чтобы узнать, что изменилось ... –

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

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