클라이언트에 연결할 수있는 java에서 서버 응용 프로그램을 빌드했습니다. 클라이언트가 매 x 초마다 작은 메시지를 보내고있는 하트 비트 시스템을 구현했습니다. 서버 측에서는 클라이언트가 메시지를 보낸 시간을 HashMap에 저장하고 모든 클라이언트가 클라이언트로부터 메시지를받은 경우 매 x 초마다 TimerTask를 사용하여 확인합니다.많은 수의 클라이언트에 대한 java 하트 비트 구현
모든 것이 클라이언트의 소량에서는 작동하지만 클라이언트 수가 증가하면 (2k +) 메모리 양이 매우 많아지고 Times가 많은 TimerTask를 처리해야하고 프로그램이 많이 먹는 것으로 시작됩니다 의 CPU.
이것을 구현하는 더 좋은 방법이 있습니까? 데이터베이스를 사용하고 특정 시간 내에 업데이트를 보내지 않은 클라이언트를 선택하는 방법에 대해 생각했습니다. 이것이 더 효과적 일 것이라고 생각하십니까? 아니면 이렇게하는 것이 더 좋습니다.
Q : 목록이 #/clients보다 커야하는 이유는 무엇입니까? 그리고 * 전체 * 목록을 반복하는 * one 타이머가없는 이유는 무엇입니까? – paulsm4
목록이 클라이언트 수보다 클 필요는 없습니다. 그것은 클라이언트 수와 같습니다. 고객 수는 언제든지 증감 할 수 있습니다. 타이머를 하나만 가지고 반복하고 10k 클라이언트 목록을 작성하면 조금 느려지기도합니다. –