我创造了这个简单的应用程序Couchbase .NET客户端被陷在构造
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()
上。
这是一个已知的问题?有没有解决方法?
这只是一个复制问题的测试,我们不会在生产中创建这么多的客户端,只有3-4个客户端可以用于不同的目的。然而,他们的创作有时会陷入困境,而这个问题似乎源于构造者本身。 –
你可以同步创建Couchbase客户端实例的代码块吗?所以你只有一个它的实例?例如辛格尔顿。另外检查新的即将推出的.NET客户端版本。 1.3.2:http://www.couchbase.com/issues/browse/NCBC – user1697575
同步在这个循环中有帮助吗?这是一个单线程程序。即使在生产中我们也没有线程,但我们在一个循环中基于不同的配置创建不同的客户端。 –