node.js 및 MongoDB/Express를 사용하여 데이터 피드 REST 서비스를 빌드 할 때 쿼리 결과가 작을 때 매우 잘 작동합니다 . 그러나 클라이언트가 1m 행 (이미 gzip을 사용하여 압축)과 같은 대형 데이터 집합을 쿼리 할 때 서버가 중단됩니다. 이 문제는 node.js 단일 스레드 설계로 인해 발생합니까? 큰 데이터 세트/응답은 rest.server (node.js JayData OData 서버)를 사용하여 서버를 정지시킵니다.
이 문제를 해결하기 위해 어떤 조언을 드리고 싶습니다.
모든 의견은
app.use('/d.svc', $data.ODataServer({
type: TYPE,
CORS: true,
database: 'odata',
responseLimit: -1,
checkPermission: function (access, user, entitySets, callback) {
logger.info('Check Access Permission for User');// + JSON.stringify(user));
if (access & $data.Access.Create) {
if (user == 'admin') callback.success();
else callback.error('Auth failed');
} else callback.success();
},
provider: {
name: 'mongoDB',
databaseName: 'odata',
address: settings.host,
port: settings.port,
username: USER,
password: PASSWORD
}
}));
가 대단히 감사합니다 (JayData 중 하나로, OData 서버 모듈 포함) 서비스에 대한 코드들이다 :
환영합니다.
루크.
네, 큰 결과 집합이 노드의 단일 스레드를 소비하고있는 것처럼 보입니다. – WiredPrairie
클러스터 해결 된 손 문제를 사용하면 모든 CPU 코어를 활용할 수 있으며 대개의 경우 응답이 매우 좋습니다. 그러나 여전히 수백만 개의 쿼리 결과 성능을 개선 할 수있는 방법을 찾아야합니다. – LukeHan