NodeJS SDKを使用しています。次の基本サンプルでは、単一のレコードを挿入するバケットを開いています。私は、それぞれのメソッドを順番に実行するように約束していますので、各メソッドの実行時間を測定できます。Couchbase Server NodeJS SDK Cluster.openbucketが接続を開くために58秒かかる
マイOS:Ubuntuの16.04
'use strict';
const couchbase = require('couchbase');
const cluster = new couchbase.Cluster('couchbase://localhost');
const uuid = require('uuid/v4');
console.time('auth');
cluster.authenticate('administrator', 'adminadmin');
console.timeEnd('auth');
function open() {
return new Promise((resolve, reject) => {
console.time('open');
let bucket = cluster.openBucket('test', function (err) {
if (err) {
console.error(err);
reject(err);
}
resolve(bucket);
});
});
}
function insert(bucket, obj) {
return new Promise((resolve, reject) => {
console.time('upsert');
bucket.upsert(`uuid::${blog.name}`, blog, function (err, result) {
if (err) {
console.log(err);
reject(err);
}
resolve(bucket);
});
});
}
function dc(bucket) { // disconnect
return new Promise((resolve, reject) => {
console.time('dc');
bucket.disconnect();
resolve('ok');
});
}
// data to insert
let blog = {
id: uuid(),
name: 'Blog A',
posts: [
{
id: uuid(),
title: 'Post 1',
content: 'lorem ipsum'
}
]
};
open().then((bucket) => {
console.timeEnd('open');
insert(bucket, blog).then((bucket) => {
console.timeEnd('upsert');
dc(bucket).then((res) => {
console.timeEnd('dc');
console.log(res);
});
});
});
出力は次のようになります。
auth: 0.237ms
open: 58117.771ms <--- this shows the problem
upsert: 57.006ms
dc: 0.149ms
ok
私はSDK-医師を走りました。
- "警告:接続文字列には1つのホストしか指定されていません。クラスタ情報を盗んに失敗しました:あなたは、あなたのアプリケーションのフォールトトレランス」
- 『INFO改善するために、このリストにあなたのクラスタからの追加の静的ノードを追加することを検討すべきである(状態コード:401)』
をし、概要は次のとおりです。
概要: [WARN]接続文字列には1つのホストのみが指定されています。クラスタの静的ノードをこのリストに追加することを検討して、アプリケーションの耐障害性を向上させることを検討する必要があります。
誰でもお手伝いしますか?