우리는 Java로 작성된 RMI 클라이언트 응용 프로그램을 가지고 있습니다.이 응용 프로그램은 주기적으로 "활성 상태 유지"메시지를 서버 응용 프로그램에 보내야합니다. 이것을 별도의 하트 비트 쓰레드로 구현했습니다. 이는 서버에 연결 유지 메시지를 보내고 Thread.sleep()을 사용하여 15 초 동안 휴면합니다. 클라이언트가 실행되고있는 상자가 CPU를 많이 사용하는 경우, 우리는 하트 비트 놓친 것을 발견"살아있는 체재"하트 비트가 보내지는 것을 어떻게 보장 할 수 있습니까?
그러나Thread heartbeatThread = new Thread(new HeartbeatRunnable(server));
heartbeatThread.setPriority(Thread.MAX_PRIORITY);
heartbeatThread.start();
, 가정 서버를 발생합니다
스레드는 높은 우선 순위로 설정되어 우리의 클라이언트 응용 프로그램이 사망했습니다.
내 주 스레드에서 Thread.yield() 호출을 추가했지만 문제가 없어지지는 않았습니다.
응용 프로그램이 실행 중일 때 정시에 하트 비트를 전송할 수있는 방법이 있습니까?
응답 해 주셔서 감사합니다. 우리는 이미 별도의 스레드에서 하트 비트를 보내고 있으며 서버는 90 초 동안 하트 비트가 없어진 후에 우리를 잘라냅니다. 따라서 15 초마다 보내는 것은 보수적 인 것처럼 보였습니다. –
실제로 매우 보수적입니다. 그러나 90 초 동안 하트 비트를 보내는 것을 관리하지 않으면 매 15 초마다 상자를 보내려고하면 상자가 심각하게 과부하되고 클라이언트가 실제로 죽은 것으로 간주되어야합니다. 피트의 대답을보십시오. – Bombe