couchbase Server nodejs sdk cluster.openbucket需要58秒才能打开连接



我正在使用nodejs sdk。在接下来的基本示例中,我正在打开一个存储桶以插入单个记录。我将每种方法都放在迫使他们接一个地运行(依次)以便我可以测量每个方法的运行时间。

我的操作系统: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-doctor。它给了我两行值得一提的是:

  1. "警告:您的连接字符串仅指定一个主机。您应该考虑将群集中的其他静态节点添加到此列表中,以改善应用程序耐受性的范围"
  2. "信息:未能重新群集信息(状态代码:401)"

摘要是:

摘要:[警告]您的连接字符串仅指定一个主机。您应该考虑将群集中的其他静态节点添加到此列表中,以改善应用程序 - 容忍度

有人请帮忙吗?

根据此答案在Couchbase论坛中,看来我的DNS服务器未正确配置。

看起来您的DNS服务器可能会被不当配置。作为普通引导程序的一部分,我们试图解决提供的主机名的SRV记录,看起来您在尝试执行此操作时可能会定时出现,从而在连接时会导致大量延迟。测试该理论的一种快速方法是在Bootstrap列表中添加附加主机名,以取消我们的DNS-SRV策略中的连接字符串资格(例如,使用:Couchbase://couchbase://localhost,InvalidHostName)。

)。

相关内容

  • 没有找到相关文章

最新更新