Коллекции загружаются
#внутренности_фанфикса #исправление_ошибки
Нашел наиболее вероятную причину, почему сайт притормаживал в полночь. В 00:02 запускается скрипт, который обновляет статистику фандомов (в энциклопедию когда заходите, там некоторые строки статистики обновляются только раз в сутки). Вот в этом обновлении статистики у меня был написан довольно сложный запрос, для выполнения которого БД анализировала 75 миллионов строк. Сегодня ночью этот запрос выполнялся 52 секунды, пока он выполнялся БД могла тормозить на остальные запросы и ещё минуту-две после этого. Переписал весь скрипт, теперь он посылает всего один не очень тяжелый запрос, потом в цикле считает данные по фандомам и обновляет только те фандомы, где цифры поменялись. В тестовом прогоне получилось гораздо быстрее, чем предыдущая версия. Примечательно, что этот скрипт я уже оптимизировал. Самая первая версия всё делала за счет одного запроса в БД. Сейчас я прикидываю, что тот запрос должен был пройтись примерно по 250 миллионам строк. В прошлый раз я заменил этот супер-тяжелый запрос на просто тяжелый + цикл по одному запросу на обновление каждого фандома. Получилось ~1800 запросов вместо одного, но это работало быстрее и меньше грузило сервер, чем один супер-тяжелый запрос. Сейчас я написал один совсем не тяжелый запрос (просматривает 48 тысяч строк), затем идёт цикл по этим же 48 тысячам строк, а потом примерно 700-800 запросов на обновление данных в БД. Тестовый прогон скрипта выполнился менее чем за две секунды, что для скрипта, выполняющегося один раз в сутки, нормально. А запрос на вывод данных вообще занимает всего несколько десятков микросекунд, то есть БД не блокируется, другим запросам этот скрипт не мешает. 14 января 2021
18 |
Ещё глянь, что может в три ночи запускаться, зависает наглухо на несколько минут.
|
Jinger Beer
Почти на час. Там бэкап всей базы. Я сейчас думаю об организации репликации БД и тогда можно будет бэкапить реплику, а не мастер-базу. Но это не самая простая штука, учитывая, что я с этим никогда не имел ещё дел. |
ReFeRy
А, ну это нормально. Трабл устроенный специально, уже не трабл, а фича. |
ДНИЩE--ЫЫЫЫ
|
|
репликация на mysql вроде не оч сложная
можно за пару дней разобраться |
ДНИЩE--ЫЫЫЫ
Да. Выглядит всё не сложно. надо взять и сделать :) |