Problema de desempenho na zona solaris 10. Vários pollsyscalls

1

Temos um programa JAVA lento em uma zona do Solaris 10. Eu corri um truss no pid e notei que as seguintes mensagens são geradas mesmo quando o programa não está fazendo nada:

pollsys(0x00000000, 0, 0xFFFFFFFE14DFEEC0, 0x00000000) = 0^M
/51:            timeout: 0.010000000 sec^M
/51:    pollsys(0x00000000, 0, 0xFFFFFFFE14DFEEC0, 0x00000000) = 0^M
/51:            timeout: 0.010000000 sec^M
/29:    pollsys(0x00000000, 0, 0xFFFFFFFE242FF970, 0x00000000) = 0^M
/29:            timeout: 0.050000000 sec^M
/51:    pollsys(0x00000000, 0, 0xFFFFFFFE14DFEEC0, 0x00000000) = 0^M
/51:            timeout: 0.010000000 sec^M
/51:    pollsys(0x00000000, 0, 0xFFFFFFFE14DFEEC0, 0x00000000) = 0^M
/51:            timeout: 0.010000000 sec^M
/51:    pollsys(0x00000000, 0, 0xFFFFFFFE14DFEEC0, 0x00000000) = 0^M
/51:            timeout: 0.010000000 sec^M
/29:    pollsys(0x00000000, 0, 0xFFFFFFFE242FF970, 0x00000000) = 0^M
/29:            timeout: 0.050000000 sec^M
/22:    lwp_cond_wait(0x101585840, 0x101585828, 0xFFFFFFFE250FE960, 0) Err#62 ETIME^M
/63:    pollsys(0xFFFFFFFE135FE458, 1, 0xFFFFFFFE135FE380, 0x00000000) = 0^M
/63:            fd=46 ev=POLLIN rev=0^M
/63:            timeout: 0.100000000 sec^M

Também é precedido / seguido por:

lwp_mutex_timedlock(0xFFFFFFFF7EAF2AE0, 0x00000000) = 0^M
/62:    pollsys(0xFFFFFFFE137FE4D8, 1, 0xFFFFFFFE137FE400, 0x00000000) = 0^M
/62:            fd=32 ev=POLLIN rev=0^M
/62:            timeout: 0.100000000 sec^M
/63:    lwp_mutex_wakeup(0xFFFFFFFF7EAF2AE0, 0)         = 0^M
/51:    pollsys(0x00000000, 0, 0xFFFFFFFE14DFEEC0, 0x00000000) = 0^M
/51:            timeout: 0.010000000 sec^M
/37:    lwp_mutex_timedlock(0xFFFFFFFF7EAF2AE0, 0x00000000) = 0^M
/37:    lwp_mutex_wakeup(0xFFFFFFFF7EAF2AE0, 0)         = 0^M
/61:    lwp_mutex_timedlock(0xFFFFFFFF7EAF2AE0, 0x00000000) = 0^M

Nós saberíamos o que isso pode significar? De qualquer forma para descobrir mais sobre isso? Eu li que podemos executar dtrace , mas existe algum outro utilitário que possamos executar para chegar onde a lentidão está acontecendo. O aplicativo leva muito tempo para executar consultas básicas, o que funciona muito mais facilmente em um servidor Windows.

    
por turtle 02.05.2011 / 23:00

2 respostas

1

Sua melhor aposta é usar o depurador Java e ver o que os encadeamentos da JVM estão fazendo. É realmente difícil dizer, a partir de uma chamada do sistema, o que está acontecendo.

    
por 03.05.2011 / 15:22
1

Você está vendo os mutexes de manipulação da JVM (bloqueios). Esperar por um bloqueio pode fazer com que um thread fique parado sem usar muito tempo de CPU, mas sem fazer nenhum progresso (!)

- dave

    
por 17.07.2013 / 14:34