У меня есть MongoDB, работающий на сервере с 2 ГБ ОЗУ и одним vCPU. ОС CentOS Linux выпуска 7.7.1908. У меня есть скрипт Python, который использовал драйвер pymon go. Существует для l oop около 10 итераций, каждая из которых выполняет агрегированный запрос к базе данных. Проблема состоит в том, что для первых 5 итераций загрузка процессора составляет около 100%, что ожидается, но для остальных 5 оно уменьшается примерно до 20%, что снижает производительность и занимает больше времени для последних 5 запросов. получить результат. Почему это происходит, а процессор не одинаков для всех запросов? Единственная разница между запросами - это параметр $ match. Есть ли настройка из Mon go или CentOS, которая удерживает мой процессор после определенного периода?
Используемый запрос выглядит следующим образом:
db.data_col.aggregate({
"$match": {
"reading_date": date
}
},
{
"$group": {
"_id": "$user",
"count": {
"$sum": 1
},
"value": {
"$max": "$value"
}
}
}
)
У меня есть индексы на read_date, user, значение.