2012-04-25 2 views
0

이것은 약간 복잡하고 가능한 다른 StackExchange 사이트에 속합니다.Tomcat 프로세스가 다른 프로세스의 포트 다시 시작 재시작을 차단합니다.

Tomcat 웹 응용 프로그램과 "감사"응용 프로그램이 있습니다. 감사 응용 프로그램은 자체 프로세스에서 실행되며 포트 60000에서 HTTP 요청을 수신합니다. 정상적인 조건에서 Tomcat은 HTTP를 통해 감사 데이터를 감사 프로세스로 보냅니다. 두 프로세스 모두 동일한 호스트에서 실행됩니다.

시스템은 CentOS 5.7이며 Tomcat은 6.0.33 버전입니다. 감사 응용 프로그램은 Flume Agent입니다.

때때로 감사 신청서를 다시 제출해야합니다. 그것이 성공하면 대개 성공합니다.

감사 용 응용 프로그램이 다시 시작될 때 약간의 편의를 위해 포트 60000에서 BindException으로 실패합니다. 감사 응용 프로그램을 중지하고 실제로 종료되었는지 확인한 다음 다시 시작하지만 실패합니다 일관되게. 문제를 해결하는 유일한 방법은 Tomcat 서버를 다시 시작하는 것입니다. 여하튼 포트 60000에서 수신 대기하는 감사 응용 프로그램을 차단합니다.

감사 응용 프로그램이 종료 된 상태에서 "lsof"작업을 수행하고 포트 60000, 우리가 얻을 : 60000, 때때로 포트 60000

웹 응용 프로그램을 듣고 다른 응용 프로그램을 차단 :

java  13178 tomcat 47u  IPv6  34165085   TCP <hostname>:60000-><hostname>:60000 (ESTABLISHED) 

우리는 정말 localhost 만에 기록이 톰캣 프로세스가 어떻게 이해할 수 없다 자바와 관련된 기본 HTTP 연결 캐싱을 사용하고 있습니다.

+0

fin_wait_2와 관련이있을 수 있습니다. 이것을 작은 값으로 설정하십시오. netstat은 무엇을 보여줍니까? – jontro

+0

@jontro 아, 아니, 다시 그 상태에 들어갈 때까지 기다려야 해. 마지막 코멘트 무시 (삭제.) –

+0

@ThomasAndrews Tomcat의 앱에서 데이터를 보내는 방법은 무엇입니까? 그것은 포트 60000 소켓을 엽니 다? –

답변

1

"임시 포트"에있는 포트 60000과 관련이 있다고 추측합니다. 1 범위입니다. 아마도 Tomcat Webapp은 때때로 다른 응용 프로그램이 포트에 바인딩하지 못하도록 포트 60000을 잡는 경우가 있습니다. 어쩌면 감사 서버의 임시 범위에없는 포트를 사용해보십시오.

+0

그래, 나는이 가능성에 대해 생각했지만이 일이 일어나고있는 메커니즘을 볼 수 없었기 때문에 시도하지 않았다. 지금 시도 할 것이 많습니다. –

+0

예, 포트 60000에서 수신 대기하는이 문제를 재현 할 수 있었지만 임시 사용 범위 밖에있는 포트에서는 재현 할 수 없었습니다. –

관련 문제