O que fazer se o erro de Java "Connection reset by peer" for relatado durante a verificação de integridade do ELB da camada 4
Informações completas do erro
java.io.IOException: Connection reset by peer at sun.nio.ch.FileDispatcherImpl.read0(Native Method) at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) at sun.nio.ch.IOUtil.read(IOUtil.java:197) at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) at com.wanyu.smarthome.gateway.EquipmentSocketServer.handleReadEx(EquipmentSocketServer.java:245) at com.wanyu.smarthome.gateway.EquipmentSocketServer.run(EquipmentSocketServer.java:115)
Resultados da análise
Um servidor de soquete é estabelecido usando Java Non-blocking I/O (NIO). Quando o cliente é desligado inesperadamente, em vez de enviar uma notificação especificada para instruir o servidor a sair, um erro é relatado.
Processo de verificação de integridade do TCP
- O nó do ELB que executa as verificações de integridade envia um pacote SYN ao servidor back-end (endereço IP privado+porta de verificação de integridade) com base na configuração de verificação de integridade.
- Depois de receber o pacote, o servidor back-end retorna um pacote SYN-ACK sobre sua porta.
- Se o nó ELB não recebe o pacote SYN-ACK dentro da duração do tempo limite, o servidor back-end é declarado não íntegro. Em seguida, o nó do ELB envia um pacote RST para o servidor back-end para encerrar a conexão TCP.
- Se o nó do ELB receber o pacote SYN-ACK do servidor back-end dentro da duração do tempo limite, ele enviará um pacote ACK para o servidor back-end e declarará que o servidor back-end está íntegro. Em seguida, o nó do ELB envia um pacote RST para o servidor back-end para encerrar a conexão TCP.
Nota
Após um handshake TCP normal de três vias, haverá transferência de dados. No entanto, um pacote RST será enviado para encerrar a conexão TCP durante a verificação de integridade. As aplicações no servidor back-end podem determinar um erro de conexão e relatar uma mensagem, por exemplo, "Connection reset by peer".
Este erro é justificado e inevitável. Você pode ignorá-lo.