Использование диска Couchbase - PullRequest
0 голосов
/ 19 ноября 2018

Я использую Couchbase, с .net - Последний CouchbaseNetClient.

Couchbase Serer 4.6.2 Enterprise работает.

У меня есть приложение, которое выполняет 5k / ops.

Проблема, с которой я сталкиваюсь, - как только я запускаю это приложение, - тогда загрузка процессора увеличивается до 100%, а использование диска также увеличивается до 100% (как отмечено на ctrl + alt + del -> Performance-> Disk 0 (C:)

Я тестировал на нескольких ПК. Все они - SSD (Samsung 850 PRO) и dell M.2. Оба имеют отличные возможности чтения и записи, которые, как я думал, могут проглотить 5 тыс. Операций.

Машина с 850 PRO имеет процессор 6c / 12t 980x. Машина с m2.dell - 4c / 8t i76700hq.

Я использую стандартный Upsert в соответствии с документами couchbase. Когда я закомментирую эту строку, процессор опустится до ожидаемого уровня.

Есть ли какая-то форма механизма настройки / производительности / индексации, которую я здесь полностью упускаю ??

С уважением,

Чудь

РЕДАКТИРОВАТЬ # 1

Поэтому я удалил Couchbase на Dell XPS и переустановил его только как сервер memcached. Самое смешное, что процессор уходит на 100%, а теперь диск остается на 0% (конечно, ожидается). Я прокомментировал строки, которые фактически выполняют Upsert, и загрузка ЦП практически не изменилась по сравнению с тем, что было до того, как я запустил приложение, даже если само приложение все еще выполняет довольно сложные функции, оно просто не вводит данные в (сейчас) база данных memcached.

Как может быть так дорого обойтись? Это всего лишь небольшой файл 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 нажмет - ЦП / Диск увеличивается до максимума .... или только в конфигурации memcached .... ЦП достигает максимума ....

Если честно, код здесь действительно не имеет значения, я думаю. Когда я заменил значения документа пустой строкой "" - проблема все та же

...