내 서비스는 대용량 JSON 객체 (약 60MB)의 응답을 반환합니다. 어떤 프로파일 링을 한 후에는 문자열로 변환하고 응답으로 보내는 데 사용되는 JSON.stringify()
호출을 거의 모든 시간을 소비하는 것으로 나타났습니다. 내가 stringify의 사용자 정의 구현을 시도하고 그들은 심지어 느립니다.NodeJS JSON.stringify() 병목 현상
이것은 내 서비스의 병목입니다. 가능한 한 초당 많은 요청을 처리 할 수 있기를 원합니다. 현재 1 회의 요청에는 700ms가 소요됩니다.
내 질문 :
1) 응답 부분의 전송을 최적화 할 수 있습니까? 객체를 문자열로 변환하고 응답을 보내는 것보다 효과적인 방법이 있습니까?
2) 비동기 모듈을 사용하고 별도의 스레드에서 JSON.stringify()
을 수행하면 전반적인 요청 수 (즉, 90 % 이상의 시간이 해당 호출에서 사용됨)가 향상됩니까?
해당 개체의 크기를 줄이기 위해 할 수있는 방법은 없습니까? 그들을 그렇게 크게 만드는 것은 무엇입니까? – jameslafferty
socket.io를 사용해 보셨습니까? JSON.stringify는 전체 객체를 메모리에로드하므로 최적화 할 수 없다고 생각합니다. 그러나 60mb의 json은 너무 거대합니다. – himangshuj
중복 데이터를 보내시겠습니까? 데이터의 하위 집합이 수정 된 경우 모든 데이터를 다시 보내지 않고 하위 집합 만 다시 보내면됩니다. 그러면 문자열 화되는 데이터의 양을 줄일 수 있습니다. – Paulpro