activemq를 사용하여 엄청난 수의 소켓이있는 문제가 있습니다.activemq에 소켓을 설치하는 데 걸리는 시간이 매우 깁니다.
ActiveMQ 문서에 따르면 비활성 상태로 인해 소켓이 닫힙니다. 하지만 내 응용 프로그램에서 언젠가 후에, 나는 거대한 소켓 연결을 비활성으로 인해있다.가 soTimeout 30 대를 데
클라이언트 구성은 ConnectionTimeout 10 초
브로커 구성가 30 대
로그 파일에서, 나는 아래의 예외를 데로 maxInactivityDuration을 가지고 있지만 : 여기 내 설정이다 Activemq 문서에 따라 소켓이 닫히지 않는 이유를 이해할 수 없습니다.
는 [WARN] [20/11월/17 23 : 58 : 06.473] [전송] -로 전송 연결 : TCP : //10.227.129.219 : 34,896 실패 org.apache.activemq.transport. InactivityIOException : TCP : //10.227.129.219 : 34,896
액티브 MQ 문서가 언급 here
사용 번째 채널도 (> 30000) 오래 비활성 (제작 더 연결 시도) 없었다 e 디폴트 값; 데이터가 기록되지 또는 30 초 동안 연결에서 읽은 경우에 InactivityMonitor 차기는. InactivityMonitor은, 내가 사용하고 InactivityIOException을 발생하고 정보를 연결
과 관련된 전송을 종료 activemq 5.13.3. 아래는 netstat
명령의 스냅 샷입니다. 당신이 공유 로그 파일을 기반으로
netstat -an | grep 9999
tcp 0 0 X.X.X.X:9999 Y.Y.Y.Y:38200 ESTABLISHED
tcp 0 0 X.X.X.X:9999 Y.Y.Y.Y:44582 ESTABLISHED
tcp 0 0 X.X.X.X:9999 Y.Y.Y.Y:41278 ESTABLISHED
... (few hundreds in total)
비 활동으로 인해 무슨 뜻인지 확실하지 않습니다. 응용 프로그램이 응답하지 않습니다 (따라서 소켓이 양호하고 응용 프로그램이 정지 된 것처럼 좋은 TCP 연결이지만 응용 프로그램 시간이 초과되었습니다)? 아니면 네트워크 문제와 같은 tcp 연결 자체가 엉망이야? 따라서 네트워크를 보존하려면 응용 프로그램 데이터를 보내지 않고 소켓을 닫을 수 있지만 여전히 TCP를 유지하십시오. –
"기본값을 사용하여 30 초 동안 연결에서 데이터를 쓰거나 읽지 않으면 InactivityMonitor가 시작됩니다. InactivityMonitor가 InactivityIOException을 발생시키고 연결과 관련된 전송을 종료합니다." – Apolozeus
이 주석은 도움을주지 못합니다 당신은 대답 –