PDA

Просмотр полной версии : Тормозит TYPO3 на странице с USER_INT


dmartynenko
24.12.2009, 19:36
После переезда на новый сервер появилась проблема.
Система: Debian Linux, TYPO3 4.1.10, PHP 5.2.9, MySQL 5.1.37

Проблема в том, что время генерации страницы с USER_INT без кэширования составляет 20+ секунд.

Причем лог генерации страницы (приложен в картинке) не дает понять почему так происходит - и кэшируемая и некэшируемая часть страницы генерируется довольно быстро. Каких-то левых и медленных экстеншенов или статистик не стоит. Поэтому я в полном недоумении откуда берется разрыв в 20 секунд между генерацией кэшируемой части и некэшируемой.

http://molnar.by/fileadmin/log.png

Сразу скажу, что сами части USER_INT не причем - они оптимизированы и генерятся быстро, и от них нам никуда не деться.

Load Average самого сервера в среднем меньше 1 (обычно 0.15-0.25). Так что он тоже не причем, производительности с запасом хватает.

Полностью кэшируемые страницы отдаются в среднем за 80-90 ms.
Закэшированные с USER_INT генерятся за 130-170 ms.

Из особенностей конфигурации - кэширование делается с опцией [FE][pageCacheToExternalFiles] = 1.
На предыдущем сервере все работало работало без такого рода глюков.

Господа, может какие-то идеи на счет что это могут быть ?

Valery Romanchev
24.12.2009, 23:04
Из особенностей конфигурации - кэширование делается с опцией [FE][pageCacheToExternalFiles] = 1.
А что будет если эту опцию убрать? (я ее никогда не использовал, и читал что особого выигрыша она не дает)
Т.е. пусть кеш страниц пишется в базу, как обычно.

Гипотеза такая - файлы в этот файловый кеш пишутся медленно (может их просто слишком много и тормозят файловые операции)

dmartynenko
25.12.2009, 18:20
Пробовал - по времени генерации ничего не поменяется. И на старом сервере работало.

Наоборот с кэшем в mysql больше тормозит, а так значительно быстрее. По крайней мере практически не "подвисает" mysql при очистках кэша страниц с tt_news и т.п. Так как cache_pages занимает всего сотни килобайт и не гигабайты.

Правда этот механизм немного пропатчен. Изначально в TYPO3 в файлы сохраняется только поле "код страницы", а в таблицу все равно пишется поле с кодом TS шаблона. У нас размер этого шаблона в среднем больше кода страницы в 2-5 раз. Поэтому в оригинальном TYPO3 с этой опцией действительно разницы никакой не будет.

void
25.12.2009, 21:43
А не пробовали кеш запихивать в специально предназначенные для этого места, т.е. в memcached?

Valery Romanchev
25.12.2009, 21:50
а может это лог в FE панельке глючит?
Действительно ли после отчистки кеша страница генерится по 20 сек?
Т.е. видно ли это глазом, когда вы не залогинены в BE?

dmartynenko
28.12.2009, 13:41
А не пробовали кеш запихивать в специально предназначенные для этого места, т.е. в memcached?

memcached используется где возможно в собственных плагинах.

Но патчить TYPO3 4.1 настолько, что бы TYPO3 Core использовал memcached желания нет. А апгрейдить до TYPO3 4.3 пока нет технический возможности.
Да и великоват обычный кэш TYPO3 для memcached - у нас 1-2 гига точно будет. А на серваке "всего" 4Гб ОЗУ.

dmartynenko
28.12.2009, 14:10
а может это лог в FE панельке глючит?
Действительно ли после отчистки кеша страница генерится по 20 сек?
Т.е. видно ли это глазом, когда вы не залогинены в BE?

Да, это заметно даже на глаз.

Также включена опция [FE][debug] и с коде страницы пишется время генерации.

Кроме того есть собственный плагин, которорый сохраняет время генерации страниц для разных условий (кэш-не кэш, FE логин - без логина) и выводит график по скорости генерации страниц, там хорошо просматривается (слева в милисекундах время).

http://realt.by/fileadmin/typo3-performance-2009-12-24.png
http://realt.by/fileadmin/typo3-performance-2009-12-25.png
http://realt.by/fileadmin/typo3-performance-2009-12-28.png

Самое интересное что cейчас ситуация иная - генерация без кэша находится сейчас в пределах 2 секунд. Разрыв между кэшируемой и USER_INT частью 0.3 секунды. Причем нагрузка сейчас выше раза в два, чем была 24.12, когда я писал свое первое сообщение и генерация страницы превышала 20 секунд.

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

ПС: Самое неприятное что лезть в ядро и отлаживать что же именно тормозит времени нет совершенно.

Valery Romanchev
28.12.2009, 21:39
ПС: Самое неприятное что лезть в ядро и отлаживать что же именно тормозит времени нет совершенно.

Это понятно... да и не факт, что вообще удастся найти проблему за разумное время.
Еще вопрос: не стоит ли чего-то типа eacceselerator или APC ?
Если стоит, то тормоза могут воникнуть, когда большое количество PHP кода кешируется в байт код.
Если акселератора нет, то я бы советовал обновиться до 4.3 (там кеширование по другому сделано)

dmartynenko
29.12.2009, 13:43
Кажется проблему удалось решить. Вчера с обеда и сегодня не было таких "всплесков" медленной работы.
По выявленной закономерности по времени появления тормозов помогли хостеры:

Скорее всего проблема заключалась в ДНС белпака. Мы раньше его использовали для серверов. Но теперь он частенько плохо работает. Сейчас поменяли ДНС на сервере. Посмотрите по графикам как сейчас будет ответ.

Хотя каким образом медленный ДНС влияет на механизмы генерации страницы TYPO3 я не понимаю.

dmartynenko
04.01.2010, 18:25
Кстати в тему http://dmitry-dulepov.com/article/small-performance-enhancement-tip.html