실시간 증권정보 프로그램을 제작하고 있습니다.
A,B 두개의 프로세서가 메모리맵으로 실시간 시세를 수신하여 가공한뒤 메모리맵에 데이터를 계속 업데이트 해주면서 C의 프로세서에게 가공된 데이터를 전송해주고 있습니다.
그리고 C의 프로세서는 클라이언트의 연결을 책임지며 클라이언트에서 요청하는 정보를 메모리맵에서 읽어서 클라이언트에게 전송해주고 동시에 A,B 프로세서에서 수신된 데이터를 분석해서 해당 시세를 받아야하는 클라이언트에게 전송해주고 있습니다.
C프로세서에서는 한개의 쓰레드에서 A,B 프로세서에서 보내주는 실시간 시세를 소켓으로 받아서 버퍼에 쌓아주고 synchronize하고 또 한개의 쓰레드에서 해당버퍼를 읽어서 클라이언트에 데이터를 전송해주고 해당 버퍼를 삭제하고 있습니다.
실시간 시세데이터는 초당 수백건의 데이터가 들어옵니다..,
대충 원리는 위와 같구요.
문제는 이 프로그램중에 C 프로세서가 잘~~ 돌아가다가 어느순간 멈추어 버립니다.
여기서 멈춘다는 말은 다른 사용자들이 접속을 하지 못한다는 겁니다.
현재 접속되어 있는 클라이언트에게는 데이터를 동시에 전송하면서요.,.
원인이 이러하니 프로세서가 언제 죽었는지도 찾지 못하고 있구요.
정말 답답합니다.,.
답변이 아니라도 좋습니다..,
비슷한 경험이라도 해보신분이 있으시다면 꼭 답글 남겨주셨으면 합니다.
예외처리를 해보세요... 또한 의심가는 부분은 전부다 제대로 처리했는가를 로그를 파일에 기록해두세요... 물론 예외처리부분도 로그에 기록해야겠죠...
그럼 쓰레드에 이상이 있어서 멈춘다면 로그파일을 보시면 어느 부분에서 에러가 발생하는지 아실 수 있을겁니다...
이런 경우는 디버깅하기가 상당히 까다로우니까 이런식으로 기록을 해두시면 에러를 잡기가 쉬울겁니다...
^^ 항상 즐코하세요...