Главная Новости

Как снизить пиковое потребление оперативной памяти WordPress за счет небуферизованных запросов к базе данных

Опубликовано: 01.09.2018

Прочитал в блоге Ars Longa, Vita Brevis о том, как можно снизить пиковое потребление оперативной памяти совершенно бесплатно, заменив всего лишь одну функцию в системной файле WordPress. Автор статьи говорит о том, что пиковое потребление оперативной памяти снижается почти в два раза, поэтому грех не воспользоваться таким советом.

Абстрактная картинка для отвлечения внимания

Так в чем же секрет? А секрета никакого нет, а есть хитрость работы с MySQL. При запросе к базе данных есть два варианта работы с результатами — сохранение результатов запроса в буфер или последовательная обработка результата.

WordPress использует именно первый вариант, который отличается агрессивным использованием оперативной памяти: выделяется память для временного буфера, в который записывается весь результат запроса, затем создается локальная копия результата запроса, и лишь только после этого временный буфер освобождается.

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

В общем, не буду больше утомлять вас разбором механизмов буферизации, а перейду сразу к рецепту. В первом варианте используется функция mysql_query(), а во втором — mysql_unbuffered_query(). Значит нужно одну функцию заменить другой. Находим файл /wp-includes/wp-db.php, создаем на всякий случай его резервную копию, и меняем в нем

на

На этом все.

Добро пожаловать , Гость !

Мы настоятельно рекомендуем Вам зарегистрироваться, если вы ещё этого не сделали. регистрация откроет Вам новые функции.

Войти или Зарегистрироваться

www.silvio-berluskoni.ru © Все права защищены © 2016.
rss