0 Пользователей и 1 Гость просматривают эту тему.
  • 7 Ответов
  • 133 Просмотров
*

Shushpan4ik

  • Новичок
  • 4
  • 0 / 0
Имеется сайт, за несколько лет уже накопилось более 30 тыс статей. Из них есть две категории около 10 тыс в каждой новостей.
В последнее время при добавлении материала или обновлении новостей в базе стали висеть запросы по 20-30 секунд в количестве около 100 штук (заняты все php-fpm процессы).

Запросы примерно такого вида:
Спойлер
[свернуть]

Методом исключения пришли к выводу, что такие запросы делает модуль mod_articles_latest (Последние новости), который на главной странице показывает ленту. Лимит в запросе как раз совпадает с числом новостей в ленте. Сразу скажу ACL выключать прорбовал (a.access в запросе) - разницы нет. Запрос появляется именно в момент выкладки, при обычном просмотре такие запросы есть, но пролетают меньше чем за секунду. При выключении данного мордуля запросов нет, но без него нельзя.

Куда копать или что делать? Может кто сталкивался с таким?

Ресурсов на сервере достаточно, 100% загрузки в этот момент нет. Общий обьем базы MySQL около 500Мб. Увеличить число процессов php-fpm не вариант, он так же забиваются этим запросом.
*

NewUsers

  • Завсегдатай
  • 1637
  • 145 / 0
У каждого запроса есть стек вызовов. Найди запрос который больше всего повторяются и найди от куда идет вызов. Да и к тому же сам модуль mod_articles_latest, не может создавать столько запросов, а значит это делает что то другое...
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

Shushpan4ik

  • Новичок
  • 4
  • 0 / 0
У каждого запроса есть стек вызовов. Найди запрос который больше всего повторяются и найди от куда идет вызов. Да и к тому же сам модуль mod_articles_latest, не может создавать столько запросов, а значит это делает что то другое...
Это необходимо включать режим отладки Joomla? Не скажется на производительности сайта он?
*

NewUsers

  • Завсегдатай
  • 1637
  • 145 / 0
Это необходимо включать режим отладки Joomla?
Да
Не скажется на производительности сайта он?
Не надо включить отладку на долго, достаточно выяснить что надо и выключить.
Если посещаемость сайт есть, но лучше включить отладку только для админа...
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

Shushpan4ik

  • Новичок
  • 4
  • 0 / 0
Если посещаемость сайт есть, но лучше включить отладку только для админа...
Сайт живой да. Не подскажите как включить только для админа? Сайт без регистрации, кроме админов и редакторов никто не логинится в нем. Стандартная отладка не будет выводить сообщения для анонимов?
*

ProtectYourSite

  • Живу я здесь
  • 2045
  • 110 / 4
  • Безопасность вебсайтов
Найдите системный плагин debug и в его настройках укажите необходимую группу.
*

ProtectYourSite

  • Живу я здесь
  • 2045
  • 110 / 4
  • Безопасность вебсайтов
Конкретно по вашей проблеме: Это происходит по той причине, что когда Вы добавляете материал в базу, он должен перестроить всю таблицу и индексы. Пока этот процесс происходит, все обновляемые таблицы блокируются и любые запросы к ним ждут завершения операции.
Из вариантов решения, это оптимизация запросов и структуры базы данных.
Либо можно создать вторую базу данных, из которой будут только считываться данные. Не уверен, как это в Joomla будет просто реализовать, но можете поискать в сторону репликации базы данных.
*

Shushpan4ik

  • Новичок
  • 4
  • 0 / 0
Конкретно по вашей проблеме: Это происходит по той причине, что когда Вы добавляете материал в базу, он должен перестроить всю таблицу и индексы. Пока этот процесс происходит, все обновляемые таблицы блокируются и любые запросы к ним ждут завершения операции.
Из вариантов решения, это оптимизация запросов и структуры базы данных.
Либо можно создать вторую базу данных, из которой будут только считываться данные. Не уверен, как это в Joomla будет просто реализовать, но можете поискать в сторону репликации базы данных.
Реплику то поднять не вопрос. Но переписывать Joomla ради этого не хочется. Да и собственно в базе много слотов еще для подключений.

Меня еще  больше смущает что 100 дочерних php-fpm процессов заняты только этими запросами. Было бы идеально чтобы Joomla не использовал все доступные ресурсы только на добавление статей, задержка в пару минут при публикации новости тут не критична. Была идея поднять реплику самого вебсервера (это виртуальный сервер, база на другом), типа админ заблокировал себе php-fpm на одном, а юзеры заходят на второй сервер где php-fpm свободен. Но тут вопрос в синхронизации кода и ресурсов images/media..

Отладку пока не включал, вечером попробую когда мало запросов пользователей и никому не помешаю.
« Последнее редактирование: 26.03.2020, 16:54:30 от Shushpan4ik »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не отображает дату публикации материала

Автор kseniyaIvashkina

Ответов: 19
Просмотров: 560
Последний ответ 27.03.2020, 04:14:08
от ErrorSystem
При сохранении материала Duplicate entry '0' for key 'primary'

Автор mirstiker

Ответов: 6
Просмотров: 2075
Последний ответ 24.03.2020, 21:05:30
от SeBun
Блог категории не с первого материала

Автор joy smile

Ответов: 1
Просмотров: 105
Последний ответ 11.03.2020, 20:28:38
от rsn
Вывод заголовка материала в любом месте!

Автор pro777

Ответов: 4
Просмотров: 176
Последний ответ 09.03.2020, 13:08:32
от pro777
Редактировать форму добавления материала

Автор ev06

Ответов: 0
Просмотров: 81
Последний ответ 15.02.2020, 08:05:11
от ev06