2011-03-17 4 views
1

JBoss 4.0.2 서버에 J2EE 웹 응용 프로그램이 배포되었습니다. 지난 며칠간부터 갑자기 그 응용 프로그램이 멈 춥니 다. 로그에서 다음 오류가 발생합니다.I/O 오류 : 소켓 오류

java.net.SocketException: Software caused connection abort: recv failed

위의 소켓 오류로 인해 응용 프로그램에서 데이터베이스를 연결할 수 없습니다. jboss 애플리케이션을 재시작해도 도움이되지 않습니다. 소켓 오류를 해결하려면 생산 시스템을 다시 시작해야합니다. 생산 기계를 다시 시작한 후 완벽하게 작동합니다.

위의 소켓 오류의 원인은 무엇일까요?

+0

DB쪽에 문제가있는 것 같다. DB 로그의 오류를 확인 했습니까? –

+0

닫힌 DB 연결 때문입니까? 방화벽 문제가있는 것 같습니다. – adarshr

+0

우리는 Windows 2003 64 비트 서버를 사용하고 있습니다. Jboss 4.0.2를 응용 프로그램 서버로 사용하고 JDK 버전 1.6.18 64 비트 및 Apache 2.2.15를 웹 서버로 사용합니다. 동일한 데이터베이스에 연결되어 있고 정상적으로 작동하는 다른 응용 프로그램 인스턴스가 있습니다. 이 DB 연결 문제를 테스트하기 위해 jsp를 다른 귀에 있지만 데이터베이스 서버에 성공적으로 연결된 동일한 응용 프로그램 서버 인스턴스 아래에 배포했습니다. 추가 정보가 필요하면 알려주십시오. 이 최대한 빠른 응답과 해결책을 찾고 있습니다. – Maulin

답변

0

이 오류는 근본적으로 누군가가 닫힌 소켓에서 읽거나 쓰려고 시도했음을 의미합니다 (Windows에서 "연결 재설정"이라고 말함). 그러나 여러 가지 이유가있을 수 있으며 응용 프로그램이 왜 그렇게하는지 정확하게 말할 수는 없습니다. 당신이 검사를 시도 할 수있는 몇 가지 : 당신이 읽고 동일한 소켓에 쓰는 여러 스레드가있는 경우

  • , 그 중 반드시 하나를 만들어 그것을 폐쇄되지
  • Nagle's algorithm을 끄십시오; 이 에러는 OS가 쓰기 전에 소켓을 닫았 기 때문에 발생했다. (setTcpNoDelay으로 할 수있다.)