NodeJS とExpressをプロキシとして使用して、HTTP GET リクエストを処理し、データを少し調整して、Amazone Kinesis にデータを送信しています。これが私のコードからの抜粋です:
var express = require('express');
var app = express();
app.get('/proxy-test', function(req, res){
var data = req.query;
// perform some light data processing
// send results to kinesis
kinesis.putRecord({
StreamName : MY_STREAM_NAME,
Data : data,
PartitionKey : MY_PARTITION_KEY
}, function(err, data) {
if (err) {
console.log(err, err.stack); // an error occurred
} else {
console.log(data);
}
});
res.send(200);
});
200 人の同時ユーザー (ループ 100 回) に対して JMeter テストを実行した後、5 分後に次のエラーが発生します。
10)\n Request.emit (/Users/me/proxy/node_modules/aws-sdk/lib/request.js:578:14) で\n Request.transition (/Users/me/proxy/node_modules/aws- sdk/lib/request.js:12:12)\n AcceptorStateMachine.runTo (/Users/me/proxy/node_modules/aws-sdk/lib/state_machine.js:14:12) で\n /Users/me/ proxy/node_modules/aws-sdk/lib/state_machine.js:26:10\n at Request. (/Users/me/proxy/node_modules/aws-sdk/lib/request.js:28:9)\n リクエストで。(/Users/me/proxy/node_modules/aws-sdk/lib/request.js:580:12)\n Request.callListeners (/Users/me/proxy/node_modules/aws-sdk/lib/sequential_executor.js: 90:20)」runTo (/Users/me/proxy/node_modules/aws-sdk/lib/state_machine.js:14:12)\n at /Users/me/proxy/node_modules/aws-sdk/lib/state_machine.js:26:10 \n ご要望に応じます。(/Users/me/proxy/node_modules/aws-sdk/lib/request.js:28:9)\n リクエストで。(/Users/me/proxy/node_modules/aws-sdk/lib/request.js:580:12)\n Request.callListeners (/Users/me/proxy/node_modules/aws-sdk/lib/sequential_executor.js: 90:20)」runTo (/Users/me/proxy/node_modules/aws-sdk/lib/state_machine.js:14:12)\n at /Users/me/proxy/node_modules/aws-sdk/lib/state_machine.js:26:10 \n ご要望に応じます。(/Users/me/proxy/node_modules/aws-sdk/lib/request.js:28:9)\n リクエストで。(/Users/me/proxy/node_modules/aws-sdk/lib/request.js:580:12)\n Request.callListeners (/Users/me/proxy/node_modules/aws-sdk/lib/sequential_executor.js: 90:20)」
すべての Kinesis レコードが確実に送信および保存されるようにするためにできること (構成またはコードの変更) はありますか?