Пришло оповещение от Woodpecker CI, что закончились свободные воркеры и всё встаёт в очередь (О_О в условиях дома это крайне странная для меня ситуация, т.к. задач мало)
Пошёл разбираться, смотреть логи
Mysql нагружался на 200%, тачка пыхтела изо всех сил
Стоило погасить Woodpecker и gitea, как всё становилось ок
Woodpecker CI забирает настройки джобы из gitea и обновляет статус коммита (мол хорошо собрался или перекособочило)
В логах gitea оказалось очень много [W] [Slow SQL Query]
и подобных сообщений:
2024/07/09 21:14:00 ...git/commit_status.go:283:GetLatestCommitStatus() [W] [Slow SQL Query] SELECT max(index) as index FROM commit_status WHERE (repo_id = ?) AND (sha = ?) GROUP BY context_hash ORDER BY max(index) desc [9 a3b69eb93eba84a405ea5d0812d7865418e5312c]
В commit_status оказалось почти 2 млн записей
Честно говоря не очень много
На всякий случай забэкапил табличку и удалил все, кроме самых свежих 10. Это помогло и все процессы зашевелились
1. Грусть печаль, что мои железки не вывозят подобное
2. Пока не совсем понимаю, зачем хранить всю историю сборок по каждому коммиту - то есть достаточно хранить условные 10, ведь хэш коммита не меняется, код не меняется. Ну ок, может быть в репе лежат подмодули и это необходимо, но я бы с удовольствием отключил, если бы знал как 😁
3. Я удалял втупую, то есть просто where id < , есть ощущение, что это надо сделать красиво, чтобы не потерять состояние коммитов
@andrey а explain смотрел? может там индекса не хватает