В настоящее время Infliff использует очень много оперативной памяти и вызывает сбой притока.
Таким образом, мы используем InfxDB для хранения данных, к которым затем можно получить доступ через графану. За одно измерение мы отслеживаем около 17 000 устройств, каждое устройство имеет около 10 тегов, данные отправляются каждые 2 минуты для представления в виде графика временных рядов и таблиц и т. Д. c.
С графаной мы группируем интервал времени $ __, а также имя устройства или тег. Интервал составляет 120 с.
Мы используем внешнюю виртуальную машину, которая имеет 32 ГБ оперативной памяти и жесткий диск емкостью 230 ГБ, 8-ядерный vCpu. (Я не думаю, что технические характеристики оборудования являются большой проблемой).
Мы переместили приток притока в режим TSI, который останавливает приращение индекса притока в оперативную память. Я думал, что это остановит нашу проблему с оперативной памятью, но, похоже, просто отложило ее ...
Сейчас. Я не хочу винить в этом приманку, я уверен, что она делает все, что делает правильно, и я просто неправильно ее использую. Ниже показано, как я отправляю данные в приток:
Код находится в python, и мы используем модуль infxdb.
def makeGrafanaValues(measurementName="",tagValues="", databaseName="scripthub_testing",send=False):
global dev_Payload
if send:
influxDBCalls.sendPreformatedList(dev_Payload,databaseName)
else:
#tags = makeTagsDict(tagValues)
dev_Payload.append(
{
"measurement": measurementName,
"tags": dict(tagValues), # this contains about 10tags per device, approx 17k devices
"time": scriptRunTime,
"fields": {
"value": 1
}
})
У меня была идея о том, может быть, я должен иметь каждый тег в качестве измерения, а не все сразу. или, может быть, я просто посылаю много данных? Я не знаю.
Редактировать: Просто чтобы прокомментировать, запись данных в приток вообще не увеличивает оперативную память, это только когда мы читаем эту информацию из притока в графане.
Кроме того, большинство из этих тегов меняются с течением времени, поэтому важно, чтобы мы могли группировать их, насколько я знаю, мы не можем перечислить их как поля, поскольку мы не можем сгруппировать их.