Socket Descriptor Leak encontrado na JDK

230 visualizações

Publicada em

Apresentação de Envelhecimento e Rejuvenescimento de Software, na UFU, em 30/03/2015.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
230
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
5
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Socket Descriptor Leak encontrado na JDK

  1. 1. “Apresentação do problema Socket Descriptor Leak encontrado na JDK” Publicado em setembro de 2008 Disponível em: http://bugs.java.com/view_bug.do?bug_id=6745052 Apresentador: Carlos Eduardo Dantas
  2. 2. ROTEIRO • Introdução. • Socket Descriptor Leak na JDK. • Reprodução do problema. • Conclusão.
  3. 3. INTRODUÇÃO • Socket Descriptor Leak ocorre quando conexões via sockets são abertas, e por algum motivo, não são fechadas, especialmente do lado servidor; • O acúmulo de conexões abertas sem fechar pode ocasionar uma falha no decorrer do tempo, já que servidores possuem um limite de conexões abertas simultaneamente.
  4. 4. SOCKET DESCRIPTOR LEAK NA JDK • Reportado em 05/09/2008, apresentando as versões 1.6.0_02, 1.6.0_04 e 1.5.0_14. • Corrigido em 22/11/2008. • Fonte: link http://bugs.java.com/view_bug.do?bug_id=6745052
  5. 5. SOCKET DESCRIPTOR LEAK NA JDK • “Descritores de arquivos referente a sockets TCP não são liberados corretamente quando se usa a classe SSLServerSocket (especialmente com muitas instâncias) em sistemas Linux. Se um servidor de aplicação (como Tomcat) executar por um longo período de tempo, esse problema irá causar o erro ‘too many open files’, e uma negação do serviço”. • Texto retirado de: http://bugs.java.com/view_bug.do?bug_id=6745052
  6. 6. SOCKET DESCRIPTOR LEAK NA JDK • Conexões SSL (Secure Socket Layer) criam um canal criptografado entre um Servidor Web e um navegador (browser) para garantir que todos os dados sejam sigilosos e seguros. • Texto retirado de: http://www.comodobr.com/ssl_o_que_e.php
  7. 7. SOCKET DESCRIPTOR LEAK NA JDK • Uma conexão socket que não se fecha caracteriza a ativação de uma falta (AR Fault), pois temporariamente não produz um erro; • Um conjunto de conexões abertas simultaneamente irão caracterizar um erro(AR Error), que serão propagados até o sistema falhar (AR Failure).
  8. 8. REPRODUÇÃO DO PROBLEMA Figura 1 – Código-fonte construído para reproduzir o erro.
  9. 9. REPRODUÇÃO DO PROBLEMA Figura 2 – Execução da classe test1.java com os parâmetros fornecidos em: http://bugs.java.com/view_bug.do?bug_id=6745052
  10. 10. REPRODUÇÃO DO PROBLEMA Figura 3 – Execução do comando lsof para verificar os arquivos de socket que estão abertos no sistema
  11. 11. REPRODUÇÃO DO PROBLEMA • “When lsof prints ‘Can´t identify Protocol’, this usually relates to sockets. So, somewhere in your code you are probably connecting sockets and not closing them properly”. • Texto retirado de: http://stackoverflow.com/questions/7911840/seeing-too-many- lsof-cant-identify-protocol
  12. 12. REPRODUÇÃO DO PROBLEMA Figura 4 – Falha apresentada após o sistema ser parametrizado para abrir 9000 conexões
  13. 13. CONCLUSÃO • Foi possível reproduzir o problema, contudo foi necessário um número maior de conexões do que o mencionado no erro reportado.
  14. 14. REFERÊNCIA • GROTTKE, M., MATIAS JR., R, TRIVEDI, K.S.. The Fundamentals of Software Aging. 2008. 6 pág. Software Reliability Engineering Workshops. • Link http://bugs.java.com/view_bug.do?bug_id=6745052. Acesso em: 29 de Março de 2015. • Link http://www.comodobr.com/ssl_o_que_e.php. Acesso em: 29 de Março de 2015. • Link http://stackoverflow.com/questions/7911840/seeing-too-many-lsof- cant-identify-protocol. Acesso em: 29 de Março de 2015.

×