我正在用NodeJS的AWS-SDK測試dynamoDB API。 但我有一些奇怪的行爲,dynamoDB似乎響應較慢,我不明白爲什麼。AWS-SDK DynamoDB NodeJS性能不佳?
從AWS控制檯,我設置爲「100」讀取容量單位爲「MyTable的」
我做了一些基準測試:
爲10個呼叫服務似乎在不到1秒的響應; 100調用(1,5秒),1000次調用(4,5秒),5000次調用(30秒)
查看下列我的代碼:
var http = require('http');
var https = require('https');
var AWS = require("aws-sdk");
var start = new Date();
http.globalAgent.maxSockets = 100000;
https.globalAgent.maxSockets = 100000;
AWS.config.update({
accessKeyId: 'MyAccessKey',
secretAccessKey: 'MySecretKey',
region: 'MyRegion'
});
var dynamodbDoc = new AWS.DynamoDB.DocumentClient();
var startedDate = new Date()
console.log('Start');
for (var i = 0; i < 5000; i++) {
getVolume("604275e8-17de-4582-bbc2-1b5eaf3b0a4c");
}
console.log('Over ' + (new Date() - startedDate) + ' ms');
function getVolume(key) {
var params = {
TableName: "MyTable",
KeyConditionExpression: "#id = :key",
ExpressionAttributeNames: {
"#id": "id"
},
ExpressionAttributeValues: {
":key": key
}
};
var requestStarted = new Date()
dynamodbDoc.query(params, function (err, data) {
if (err) {
console.error("Unable to query. Error:", JSON.stringify(err, null, 2));
} else {
console.log("DynamoDB : " + (new Date() - requestStarted));
}
});
}
隨着5000個的呼叫,「用於「聲明在3秒後結束,但第一個dynamoDB在30秒後迴應,爲什麼?
謝謝你在前進,
也取決於您對測試的期望,也許它將跨越不同按鍵傳播dynamodb調用更相關,只是爲了不將所有點擊集中在同一個分區上 – Tom