5

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 レコードが確実に送信および保存されるようにするためにできること (構成またはコードの変更) はありますか?

4

1 に答える 1

2

Kinesis プロデューサー インスタンス (NodeJS を実行しているインスタンス) でクロック ドリフトが発生している可能性があります。これは、さまざまなサービス (Kinesis だけでなく) の AWS API をクエリするときによく見られました。

NTP プールで AWS ノードを使用するために ntp をインストールして構成することはかなり一般的です。

sudo apt-get -qy install ntp
sudo sed -i -r 's/^(server\s[0-3]\.)ubuntu([a-z\.]+)/\1amazon\2 iburst/' /etc/ntp.conf
sudo sed -i -r 's/^(server\sntp\.ubuntu\.com)/#\1\nserver time.nist.gov/' /etc/ntp.conf
sudo service ntp restart

興味がある場合は、他のドキュメントへのリンクを次に示します。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html

于 2015-04-03T20:17:49.283 に答える