всегда под горлышко (так задумано).
Где-то раз в 2 недели бекенды на несколько часов начинают жрать CPU как не в себя, рисуя на графиках красивый логарифм. При этом по IO не меняется вообще ничего. Вместе с CPU растет только buffer hit (все индексы полностью в RAM). «Тяжелых» запросов к базе нет, все быстрые и по индексам, но их много.
Что оно там делает? Индексы мнет? Как это называется?
flamegraph?
нету каких-то чисток данных в таблицах? где-нить в “начале” таблицы (физическом)?
Первое, что сразу лезет в голову: количество выполняющихся запросов (которые не в idle, а в любом другом состоянии) в момент жора, и в момент, когда более-менее нормальное состояние. Второе - группировка запросов по типам. А потом уже всё остальное.
Итак: — делаешь очень много апдейтов, пусть и на таблице смешного размера (у меня всего 20 мегабайт); — пихаешь на слейв hot_standby_feedback = on, потому что когда-то тебе приспичило; — дожидаешься, пока слейв начнет отставать; — запросы на мастере начинают жрать CPU, фильтруя старые записи, но при этом тормозят не сильно, а так, чтобы не попадать в логирование медленных запросов — таблица-то маленькая; — слейв догоняет тормозящего мастера, все восстанавливается; — где-то между этими пунктами ты набираешь EXPLAIN ANALYZE (BUFFERS) и очень удивляешься, почему у тебя вместо пяти буферов сто тысяч.
Обсуждают сегодня