Michael
12.01.2018
04:16:24
разбираясь с быстродействием базы (у меня oracle), наткнулся на то, что периодически, раз в час (ровно в 00 минут) запускаются какие-то процессы, которые на графиках загрузи CPU выражаются в пиках iowait. в логах заббикса при этом появляются сообщения типа:
slow query: 14.420054 sec, "select distinct itemid from trends_uint where clock>=1515276000 and (itemid between 43863 and 43916 or itemid between 44023 and 44314 or itemid between 44369 and 44503 or itemid between 66517 and 66521 or itemid between 68200 and 68210 or itemid between 68233 and 68321 or itemid between 68394 and 68425 or itemid between 68428 and 68493 or itemid between 68496 and 68527 or itemid between 68530 and 68559 or itemid in (23287,23826,24067,24127,24246,24367,24426,24427,24486,24547,24847,25026,25086,25087,25386,25867,25927,26047,26466,26467,26766,26767,26827,27067,27186,27367,27666,27787,27906,27907,28206,28207,28626,28627,29166,29167,34454,34455,34456,34457,34626,34627,34746,34747,34806,34807,34866,34867,39666,39667,40506,40986,40987,41047,41106,41107,41166,41167,41227,41407,41946,41947,42556,42606,42666,42667,42966,43848,66514,68164,68182,68390,68391,69067,69667,69906,69907,72187,72606,72907,72966,72967,73026,73027,73146,73147,74646,74647))"
эти запросы генерируются во время выполнения ф-ций dc_remove_updated_trends и dc_trends_fetch_and_update из src/libs/zbxdbcache/dbcache.c
пики, возникающие в 00 минут каждого часа - это и есть те, про которые я говорю. а правее каждого из них есть чуть меньшие всплески, с каждым часом отстающие все дальше - это housekeeping-и.
так вот, приведенный выше запрос (набор условия с itemid разный и бывает очень большим) бывает выполняется до 60 с.
по таблицам trends_uint и trends есть единственный индекс - primary key (ITEMID, CLOCK).
т.к. порядок именно такой, то и план выполнения адовый - сканируется индекс столько раз, сколько between-ов и элементов в наборе, который перечислен в in.
так вот, если добавить индекс для таблиц trends_uint и trends по полю clock все становится просто идеально - ежечасные нагрузки пропадают. на графике - только пики от housekeeping-а
вот и интересно, наблюдаются у кого-то такие всплески iowait и исчезнут ли они, если добавить индекс. может быть имеет смысл отправить на support.zabbix.com запрос на добавления этого индекса в схему?