Java.net.SocketTimeoutException: Read timed out

Boa Tarde Pessoal,

Em uma rotina de envio de e-mail para uma mailling list os logs do JBoss estão mostrando a seguinte exception:

javax.mail.MessagingException: Exception reading response;
    nested exception is:
         java.net.SocketTimeoutException: Read timed out

Não tive acesso aos códigos das classes de envio ainda… no entanto gostaria de saber o que poderia causar tal erro … para iniciar minhas pesquisas e meus testes já direcionados.

Obrigado a todos.

Acho que a Exception já é clara o suficiente: deu timeout ao receber dados do servidor de e-mail.
Qual é o problema? Podem ser vários: infra-estrutura (rede, firewall, roteador, etc), servidor de e-mail (hardware e software), tráfego/banda, etc.

1 curtida

Obrigado pela atenção Oyama.

Fiz tal questionamento porque o setor de Infra estrutura realizou um teste com uma aplicação concorrente feita em Perl, que disparou uma quantidade razoavel de e-mails (172.800, aprox. 2/seg. em 24h) sendo que não houveram perdas.

Enquanto que a aplicação em java fez com que tais logs mencionados acima fossem gerados.

Outro fato interessante é que tal aplicação (java) sempre printou esses erros, mesmo antes dos testes com Perl. Assim que foi colocado a rodar a aplicação em Perl p/ rodar, ela fez seu papel sem problema algum enquanto que a feita em java continuou com os bugs mencionados.

Estou preocupado em saber por onde começar a analisar tal problema porque não tive acesso aos códigos ainda, mas já gostaria de ir descartando possíveis falhas de codificação ou mesmo de hardware.

Chegou-se ao extremo de trocar de servidor (Máquina, Software, Rede).

Esta máquina tem acesso total a internet sem qualquer firewall no meio do caminho. Não existem bloqueio de portas entre as máquinas do JBoss e do Servidor de E-mail.

Alguma ideia ??

Obrigado pela atenção.

Primeiro, uma crítica construtiva: por que você não falou logo no primeiro post sobre as condições que o erro ocorreram (teste de carga, etc)? Quem lê o post não consegue adivinhar e tem que ficar chutando em que condições deu o erro.

Chutes:

  • Já tentou comparar o código em Perl e o código em Java? Eles fazem exatamente a mesma coisa do ponto de vista do e-mail (mandam para um único destinatário, tem o mesmo tamanho de texto, tem a mesma configuração de from/reply-to, segue a sequencia de conectar/enviar e-mal/desconectar ou utilizam algum recurso de mandar e-mails agrupados, etc)?
  • Já tentou medir o tráfego de dados, request/response TCP?
  • No servidor de e-mail não foi gerado nenhum log?

Dicas:

  • Estude sobre o protocolo SMTP e veja em que condições ocorre este tipo de erro.
  • Leia a documentação/foruns sobre o SMTP server que você está usando e tente verificar se não tem bugs/comportamentos relacionados ao problema.
  • Veja se houve falha na “entrega” do e-mail. Apesar do erro, o e-mail pode ter sido enviado.
1 curtida

Isso tem cara de ser coisa de spammer…

Olá Victorwss,

Não é coisa de spammer. Realizamos tal teste com esta quantidade pelo simples motivo de que se o servidor aguenta essa tranco… p/ aplica;ções que enviam bemmmm menos e-mails ele vai na boa OK.

Oyama,

Novamente obrigado pelas dicas… irei verificar certinho oque pode estar havendo em documentações e em fóruns relacionados ao servidor de e-mail e irei estudar sobre SMTP (bastanteee) …

Obrigado a todos… assim que eu tiver uma luz, posto aqui qualquer novidade.

Um Grande Abraco.