我创建了这个简单的应用程序
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()
上。
这是一个已知问题吗?有没有解决方法?
答案 0 :(得分:3)
我遇到了同样的问题,最终弄明白了。我正在运行fiddler2来检查Web请求/响应的内容。但是,这干扰了bucketsStreaming URI。
一旦我关闭fiddler2并确保没有其他代理,它就可以正常工作。在尝试初始化构造函数之前,我还可以通过重新启动fiddler2来按需重现问题。
请告诉我这是否也是您的体验。
答案 1 :(得分:0)
通过创建多个客户端实例,不确定您要测试/实现的是什么?我不认为你应该创建这么多Couchbase客户端。它应该是一个服务于所有应用程序线程的客户端实例。
你应该移动“new CouchbaseClient(config);”在循环之外。
e.g。
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
}