我创建了这个简单的应用程序
using System;
using System.Configuration;
using System.Threading;
using Couchbase;
using Couchbase.Configuration;
namespace SimpleCouchClientTest
{
/// <summary>
/// Simple couch client test
/// </summary>
class Program
{
static void Main(string[] args)
{
var connectionString = "http://localhost:8091/pools/";
var bucketName = "testbucket";
var bucketPassword = "testbucket";
var numberOfLoops = 1000;
for (var i = 0; i <= numberOfLoops; i++)
{
var config = new CouchbaseClientConfiguration
{
Bucket = bucketName,
BucketPassword = bucketPassword,
};
config.Urls.Add(new Uri(connectionString));
Console.WriteLine("Creating client #" + i);
var couchClient = new CouchbaseClient(config);
Console.WriteLine("Client #" + i + " created.");
//Thread.Sleep(100); //-- uncomment this to run successfully
}
}
}
}
numberOfLoops
设置为1000,并且在第一个客户端之后,Couchbaseclient创建悬挂。我举办了windbg会话,我得知客户被卡在BucketConfigListener.Start()
上。
这是一个已知问题吗?有解决方法吗?
我遇到了相同的问题,最后弄清楚了。我正在运行Fiddler2来检查Web请求/响应的内容。但是,这正在干扰桶形的URI。
一旦我关闭了Fiddler2并确保没有其他代理,它就可以了。我还能够通过在尝试初始化构造函数之前重新启动Fiddler2来按需重现问题。
让我知道您是否也经历过。
不确定您是否想通过创建多个客户端实例来测试/实现什么?我认为您不应该创建那么多的Couchbase客户。它应该是为您的所有应用程序线程服务的一个客户端实例。
您应该移动"新的couchbaseclient(config);"在循环外。
,例如
var config = new CouchbaseClientConfiguration
{
Bucket = bucketName,
BucketPassword = bucketPassword,
};
config.Urls.Add(new Uri(connectionString));
Console.WriteLine("Creating one client for all my app needs");
var couchClient = new CouchbaseClient(config);
for (var i = 0; i <= numberOfLoops; i++)
{
// use client to do your test operations get/set/etc
}