자동매매 봇 개발시 프로세스가 죽는 이유와 해결책
여러 코인을 웹소켓으로 추적하다 보면 go routine이 여러개 실행된다.
동시에 여러 프로세스를 돌리면 전산 자원(memory)가 고갈되어 프로세스가 중단되는 것이다.
따라서 연속적인 데이터(events)를 처리하기 위해 동시처리 프로세스(concurrent process)의 개수를 적절히 통제할 필요가 있다.
아래 영상은 간단하게 채널로 고 루틴의 숫자를 제한하는 방법에 대해 잘 설명하고 있다.
https://www.youtube.com/watch?v=tSjnf6l8cq8
간단하게 요약하자면, 연속적인 events, 엄청난 양의 데이터를 처리(process)할 때, 메모리가 고갈되어 중단되는 (OMM: Out of Memory) 오류가 발생한다. 이를 방지하기 위해 처리할 go routine의 최대 개수를 제한할 필요가 있다.
channel은 많은 양의 데이터로 버퍼링이 발생할 때 프로세스를 차단하는 기능을 갖기 때문에, go routine의 최대 개수에 제한을 건다. 속도는 느려지지만, 프로세스가 중단되는 현상을 방지할 수 있다.
✔️ 함께 보면 좋은 글
DTO(Data Transfer Object)의 필요성
와우!! 대강 써놓으면 멋진 글로 변신
ㅋㅋㅋㅋㅋ