Как ускорить бэкэнд TYPO3? - PullRequest
       17

Как ускорить бэкэнд TYPO3?

0 голосов
/ 15 декабря 2018

Дано: каждый вызов модуля BE занимает несколько секунд даже с SSD-накопителем.(Хорошо настроенная установка выполняется менее 1 секунды для общих задач BE).

  • Каковы вероятные узкие места?
  • Как проверить их?
  • Какие варианты ускорения?

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

Ответы [ 4 ]

0 голосов
/ 29 декабря 2018

В дополнение к тому, что уже было сказано, поместите среду выполнения в свой контрольный список:

Память:

Если тяжелая среда IDE и другие инструменты открыты вв то же время доступная память может стать проблемой.Чтобы проверить профиль памяти, вы можете запустить инструмент, который отслеживает использование памяти машиной.

Если используется виртуализация, отметьте память, выделенную для этого поля.Попробуйте, если выделение дополнительной памяти улучшает поведение.

Если требуется и возможно, потратьте больше памяти на свой компьютер.Это не должно быть исправлением плохо написанного кода.Плохой код может взорвать любой объем памяти.

Доступ к файлам:

TYPO3 читает и записывает тысячи файлов.Если вы работаете с современным SSD, это удивительно быстро.Я измерил это.Загрузка всех файлов классов TYPO3 занимает доли секунды.

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

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

Если вы сомневаетесь, протестируйте и сохраните свои файлы и БД на другом диске, чтобы проверить поведение.

Маршрутизация

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

Соединение с базой данных:

Я быстрое соединение с базой данных имеет решающее значение.Если доступ к базе данных медленный, TYPO3 не может быть быстрым.

Особенно из-за Extbase TYPO3 часто запрашивает гораздо больше данных, чем действительно требуется, и чаще, чем действительно требуется, потому что на уровне PHP разрешаются многие отношения.вместо самого слоя БД.Загрузка структур данных, таких как корневая строка, может вызвать много пинг-понга между PHP и уровнем БД.

Я не могу дать совет, как измерить ваше соединение с БД.Вы должны как администратор для этого.Что вы всегда можете сделать, это протестировать и сравнить с другой БД из совершенно другой среды.

Скорость базы данных может зависеть от типа самой базы данных.Обычно вы используете MySQL / Maria-DB, которая должна быть быстрой.Это также зависит от факторов, упомянутых выше, памяти, доступа к файлам и маршрутизации.

Стратегия:

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

Когда дело доходит до чистой и производительной настройки маршрутизации или виртуализации, все равно лучше всего спросить опытного администратора.

Резюме

Это все в дополнение к тому, на что уже указывали другие.

Что было бы действительно полезно, так это BE-плагин, который анализирует и измеряетсреда.Пусть есть некоторые, которых я не знаю.

0 голосов
/ 19 декабря 2018

еще один аспект, который вы можете проверить: в пользовательской записи хранится много вещей, например, настройки, которые вы использовали в модуле журнала.
одна настройка, которая может занимать много памяти (и время для сериализации идесериализация) - это состояние дерева страниц (какие страницы развернуты, а какие нет).

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

0 голосов
/ 29 декабря 2018

Здесь нельзя комментировать, но нужно сказать: объект TSFE абсолютно ничего не делает в бэкенде TYPO3.Бэкэнд всегда не кэшируется.TYPO3-Backend - это автономный модуль для редактирования и обслуживания выходных данных внешнего интерфейса.Существует множество результатов поиска Google, которые игнорируют этот факт.

Возможные узкие места производительности - плохие письменные расширения, которые выполняют рендеринг или обработку данных.Привязка к основным функциям обычно не составляет большого труда, но рендеринг многих элементов для форм редактирования (особенно в TYPO3s Fluid Template Engine) может вызвать проблемы с производительностью.

Extbase-DBAL-Layer также может вызвать серьезные проблемы с производительностью.Причина в том, что модель базы данных не знает индексов.Это просто, но глупо.SQL-Join для большой таблицы из 2000 записей + заметно задержит вывод, в зависимости от модели данных.

Кроме того, TYPO3 Backend на самом деле не зависит от конфигурации Typoscript, но фактически контролирует некоторый вывод или загружаетпо расширению, необходим полный анализ файлов * .ts.И этот парсер работает очень медленно.

Если вы хотите ускорить процесс, вам нужно знать, что идет не так.Единственный способ отладить это поведение - это проверить среду выполнения с помощью инструмента профилирования PHP, такого как xdebug, потому что TYPO3 Framework очень сложен.Он использует какую-то Doctrine Framework и загружает тонны файлов при каждом запросе.Таким образом, хорошо сконфигурированный OpCache является обязательным.

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

0 голосов
/ 18 декабря 2018

Общие советы по настройке производительности для TYPO3 можно найти здесь: https://wiki.typo3.org/Performance_tuning

Однако, по моему опыту, наиболее общие проблемы с производительностью связаны с одной из нескольких причин:

  1. Плохо / нет кеширования.Обычно это проблема с одним или несколькими расширениями (частично) отключающими кеш.Попробуйте отключить все сторонние расширения и включить их одно за другим, чтобы увидеть, что приводит к наибольшему замедлению работы сайта.$GLOBALS['TSFE']->set_no_cache() отключит весь кеш, чтобы вы могли искать это.USER_INT и COA_INT в TypoScript также отключают кэш для всего, что там настроено.
  2. Большое количество данных.Проверьте базу данных на наличие таблиц, содержащих много данных.Сколько составляет «много», зависит от множества факторов, но обычно все, что меньше миллиона записей, не должно быть слишком большой проблемой, если, например, вы не делаете запросы с такими вещами, как LIKE '%...%' для полей, содержащих много данных.
  3. Недостаточно ресурсов на сервере.Чтобы это исправить, добавьте больше памяти и / или процессорных ядер на сервер.Или, если это общий сервер, уменьшите количество сайтов, работающих на нем.
  4. Большой трафик.Независимо от того, сколько ресурсов имеет сервер, он всегда будет иметь ограничение на количество запросов, которые он может обработать в данный момент времени.Если это ваша проблема, вам придется изучить балансировку нагрузки и кэширование серверов.Если у вас (обычно) мало посетителей, высокий трафик все еще может быть вызван роботами, сканирующими ваш сайт слишком быстро.Их обычно легко заблокировать по IP-адресу в конфигурации вашего брандмауэра или веб-сервера.

Медленный бэкэнд на сервере без какого-либо другого трафика (вы единственный, кто может получить к нему доступ) исключает 1(может вызвать медленный бэкэнд, только если пользователи обращаются к веб-интерфейсу и вызывают высокую нагрузку на сервер) и 4 (нет другого трафика).

...