요즘 실시간 모니터링 관련 DASHBOARD를 만들고 있는데.. 관련하여 차트를 만들고 있습니다.

1. RO를 통한 데이터 수신

//    2초단위 작업 시 발생 어러 ConcurrentModificationException
//
//    [참조] 실제 개수 = 개수 * 서버수(10) * 자료수(3)
//
//    시간(초)    서버        개수        결과        RO 수신시간
//    2,000    10        43200    ERROR        -
//    4,000    10        21600    OK        9.359
//    10,000    10        8640    OK        3.531
//    20,000    10        4320    OK        1.688
//    30,000    10        2880    OK        1.172
//    60,000    10        1440    OK        0.578
//
//    작업 진행은 시간 계산이 편한 10초 단위로 진행함.

위 표를 보면 알 수 있듯이 너무 많은 량의 데이터를 수신하려 한다면 flex messaging 처리 부분에서 힙 메모리 오버 플로우 애러가 발생하네요. 그래서 어쩔 수 없이 데이터를 줄여서 처리 했습니다. 맨 위 삽입한 차트가 1분(60초) 단위로 처리한 데이터를 RO를 통해 한번에 수신한 것인데 ... 그래도 차트 자체가 빡빡하네여 실제 적용할 때에는 20~30분 단위로 처리한다음 구간 SELECT 형태로 바꿔야 깔끔한 처리가 가능할 거 같습니다.

2. message-push 를 통한 데이터 수신 처리

RO를 통해 오늘-어제 데이터를 수신한 다음 실시간 데이터를 넣으면서 어제 데이터를 오늘 날짜로 업데이트 하는 형태의 차트 입니다. 위와 같이 처리를 하려 하니 차트 업데이트 과정에서 약간의 시간 지연 현상이 발생하는 거 같더군요 데이터 량이 많아 그런지 ㅡ,.ㅡ;

그리고 제가 전에 한 blazeDS 관련 포스팅 . message-push 서비스 사용시 channel-definition 에서 properties가 존재하지 않으면 ie7, ie8 에서는 정상적으로 message-push가 동작하지 않는거 잊지 말기 바랍니다. 아마도 요거 버그 같은데 ... 뭐 물어볼 분도 없구 ㅡ,.ㅡ blazeDS관련 국내 커뮤니티는 찾기 힘든거 같네요 ^^

3. 결론

ㄱ. RO 사용시 많은 량의 데이터 수신은 속도 저하를 가져옴. 적절하게 필요한 데이터만 사용하자 !
ㄴ. Messaging 서비스는 다수의 데이터 서비스 사용시 설계를 잘 해야 된다.
(자바쪽에서 스레드 내부에서 메시지 생성시 타입, 데이터 형태로 메시지를 만들어 보내는것이 무난 하기는 한거 같음)

차트 관련 주저리 플젝 완료 될때까징 주우욱... 해보렵니다.

+ Recent posts