我正在使用带有.net的Couchbase-最新的CouchbaseNetClient。
Couchbase Serer 4.6.2企业版正在运行。
我有一个执行5k / ops的应用程序。
我面临的问题-是在我启动此应用程序后-CPU使用率跃升到100%,磁盘使用率也跃升到100%(如ctrl + alt + del-> Performance-> Disk上所述0(C:)
我已经在几台PC上进行了测试。-全部都是SSD(三星850 PRO)和Dell M.2。两者都具有出色的r / w功能,我以为会吞下5k运算。
装有850 PRO的机器是6c / 12t 980x CPU。 带有m2.dell的机器是4c / 8t i76700hq。
我使用的是根据沙发床doco的标准Upsert。当我注释掉这一行时,CPU会立即下降到预期水平。
这里是否存在某种形式的调整/性能/索引编制机制?
此致
Chud
编辑#1
因此,我在Dell XPS上卸载了Couchbase,然后仅将其重新安装为内存缓存服务器。有趣的是,CPU达到了100%,现在磁盘停留在0%(当然是预期的)。我已经注释掉了实际进行Upsert的行,并且CPU使用率实际上与启动该应用程序之前的状态相同,即使该应用程序本身仍在进行大量处理,也只是没有将数据输入到(现在)内存缓存数据库。
Upsert如何如此昂贵?这只是一个小的Json文件...
编辑#2
因此,这里有一些示例可以帮助您入门。我已经围绕一些模型更改了模型,以在执行操作时保持机密性,因此可以这么说。因此,如果我对此表示歉意,我实际上只是将它们一起砍掉了。
下面的Json示例-我想将其循环放置,然后下雨,看看是否可以产生相同的负载。
{"Position":10,"Type":0,"Type2":5,"Value":0.0,"Type3":1,"Location":"Bla","Type":"Ex","Id":"11111"}
public class RootObject
{
public int Position { get; set; }
public MyFirstType Type { get; set; }
public MySecondType Type2 { get; set; }
public double Value { get; set; }
public MyThirdType Type3 { get; set; }
public string Location { get; set; }
public string Id { get; set; }
}
public enum MyFirstType
{
A,
B
}
public enum MySecondType
{
C,
D,
E,
F,
G,
H
}
public enum MyThirdType
{
I,
J
}
public class CouchBaseInstanceTest
{
private Cluster CouchClient;
private IBucket Bucket;
public CouchBaseInstanceTest()
{
CouchClient = new Cluster(new ClientConfiguration
{
Servers = new List<Uri> {new Uri("http://localhost:8091")}
});
// I think CB v 5.0 and over, or 5.5 needs auth against the bucket
//CouchClient.Authenticate("admin", "password");
Bucket = CouchClient.OpenBucket("default");
}
public bool Upsert(string key, dynamic value, double expiry)
{
var Document = new Document<dynamic>()
{
Id = key,
Content = value,
Expiry = TimeSpan.FromHours(expiry).ToTtl()
};
return Bucket.Upsert(Document).Success;
}
}
一旦Bucket.Upsert被击中-CPU /磁盘已用完...。或者仅在内存缓存配置中。...CPU已用尽......
不过,老实说,我认为这里的代码确实无关紧要。当我用空白字符串“”替换文档值时-问题仍然相同