Couchbase磁盘使用情况

时间:2018-11-19 06:17:26

标签: c# .net couchbase

我正在使用带有.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已用尽......

不过,老实说,我认为这里的代码确实无关紧要。当我用空白字符串“”替换文档值时-问题仍然相同

0 个答案:

没有答案