Я использую 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 .... ЦП достигает максимума ....
Если честно, код здесь действительно не имеет значения, я думаю. Когда я заменил значения документа пустой строкой "" - проблема все та же