MQTT라이브러리를 사용하여 데이터를 전달 받으면
콜백이벤트를 발생시키는 코드를 작성하고 있습니다.
초당 약 700 개의 데이터가 발생하는 것 까지는 문제가 없습니다.
그러나 700건보다 많은 데이터가 발생하면
메모리 사용량이 점차 증가하고 애플리케이션이 종료됩니다.
(증가하는 동안 CPU 사용률은 40 ~ 70 %정도 되고 콜백 이벤트는 지속적으로 발생합니다)
처음에는 메모리 누수가 의심되었는데,
메모리가 늘어난 시점에서 데이터가 발생을 중단시키고 지켜본 결과,
그동안 밀린 이벤트들이 지속적으로 처리되면서
메모리 사용량이 점차 감소하고
메모리 사용량이 처음 실행되었을 때와 유사하게 돌아갑니다.
많은양의 데이터가 발생하면 CPU 사용률이 100 %가 아니고
이벤트가 발생하지 않아도 누적 이벤트가 실행되는 점이
이벤트 핸들러의 동시처리 제한이 되어 있지 않은가 싶은데
혹시 이와 관련해서 참조할만한 자료나 키워드를 알려주시면 감사하겠습니다!
추가-------------------------------------------------------------------------
콜백 이벤트 부분을 매우 간소화 시키면 메모리 상승이 발생하지 않습니다.
구글링을 해봤을 때 이벤트가 완전히 종료될때까지 인스턴스가 유지된다고 봤는데
이 부분이 메모리 상승률에 영향을 끼치는 부분이라 생각됩니다.
정 안되면 데이터를 전달받으면 큐에 쌓고
별도의 서비스를 돌리려 하는데 근본적인 해결책은 아닌거 같네요.
이벤트 핸들러의 문제를 해결할 수 있게 도움 부탁드립니다.