↓
 ↑
Регистрация
Имя/email

Пароль

 
Войти при помощи
ReFeRy
14 января 2021
Aa Aa
#внутренности_фанфикса #исправление_ошибки

Нашел наиболее вероятную причину, почему сайт притормаживал в полночь. В 00:02 запускается скрипт, который обновляет статистику фандомов (в энциклопедию когда заходите, там некоторые строки статистики обновляются только раз в сутки). Вот в этом обновлении статистики у меня был написан довольно сложный запрос, для выполнения которого БД анализировала 75 миллионов строк. Сегодня ночью этот запрос выполнялся 52 секунды, пока он выполнялся БД могла тормозить на остальные запросы и ещё минуту-две после этого.

Переписал весь скрипт, теперь он посылает всего один не очень тяжелый запрос, потом в цикле считает данные по фандомам и обновляет только те фандомы, где цифры поменялись. В тестовом прогоне получилось гораздо быстрее, чем предыдущая версия.

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











Закрыть
Закрыть
Закрыть