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

Пароль

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

Вот уже около недели анализирую лог медленных запросов к БД, вношу изменения в код или в структуру БД для устранения узких мест. Удалось ускорить несколько групп запросов.

- Часть проблем была связана с тем, что Фанфикс вырос. Когда код писался, данных в БД было значительно меньше, и написанный тогда запрос не приводил к проблемам. Позднее стал тормозить на большом объеме данных.

- Ещё часть проблем это мои ошибки в проектировании запросов, неверные решения, принятые, когда от не знания, когда от недостатка опыта, когда по недосмотру.

- Существенная часть проблем - это нехватка каких-то индексов в БД. Фанфикс я пишу долго, при создании таблицы могли быть нужны одни индексы, а потом был дописан новый функционал, запросы к БД стали более разнообразными, а необходимые индексы вовремя добавлены не были.

- Одна проблема нашлась совсем неожиданная. На не самой загруженной таблице индексы были неактивными. Не могу сообразить, как так вообще получилось. Больших проблем из-за этого не было, ибо тяжелые запросы к этой таблице происходят редко.

Что по итогам:

- За последние сутки по логу вижу три случая, когда существенная пачка запросов массово тормозила. В это время у пользователей сайт мог грузиться по минуте и больше. Три таких случая в сутки, каждый длительностью по паре минут. Причин пока не нашел.

- Медленных запросов, которые могли незначительно тормозить все остальные запросы, выполняющиеся одновременно с ними, стало значительно меньше. Точных замеров не производил, ибо на каждый такой замер надо ждать хотя бы сутки.

- Никуда не делать проблема ежедневного бэкапа. Каждую ночь сайт очень сильно тормозит в течение примерно часа. С этим пока ничего не делал. Решение существует. В этом должен помочь второй сервер, который я арендовал в ноябре. Надо реализовать репликацию - это технический процесс, когда все изменения в базу данных одновременно вносятся на два сервера. Одновременно существует две копии базы данных. Тогда бэкапить можно будет дублирующую БД, а основная в этот момент не будет тормозить. Сложностей тут несколько: во-первых, я этого ещё никогда не делал - надо внимательно изучить вопрос и просто решиться, во-вторых, процесс репликации увеличивает среднюю постоянную нагрузку на базу, надо будет убедиться, что сервер это без проблем выдерживает, в-третьих, репликация требует прилично свободного места на диске, надо убедиться, что его достаточно, ибо у основного сервера Фанфикса диски быстрые, но довольно маленькие.

Работаю дальше.
15 января 2021
ПОИСК
ФАНФИКОВ











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