PDA

Просмотр полной версии : Долго генерится страница (до 10 секунд)


dizell
03.06.2009, 12:43
Под typo3 развернуто несколько сайтов.
сервер:Linux Fedora 10, mysql 5.0.67.
Проблема: один из сайтов тормозит, страницы открываются через 10 сек.
"долгих" запросов на mysql нет.
Подскажите, пожалуйста, куда смотреть.
З.Ы. Анализ системы показывает, что после запроса страницы mysqld начинает интенсивно работать с операциями вывода.

Valery Romanchev
03.06.2009, 13:21
какие плагины стоят на странице?
Если там есть tt_news и количество новостей порядка 10000 - то это известная и решаемая проблема.

Если что-то другое, то поставьте расширение debug_mysql_db и посмотрите, какие запросы идут и сколько времени они занимают.

dizell
03.06.2009, 14:40
Новостей около 1500 (всего-то).
allowCaching = 1

статистика системы в момент запроса страницы
#vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 120 1381304 279068 933604 0 0 4 0 2030 2229 0 0 100 0 0
1 0 120 1379088 279096 933576 0 0 0 184 1664 2320 7 1 84 8 0
2 1 120 1354932 279100 933584 0 0 0 368 2214 5495 35 14 50 1 0
2 0 120 1354676 279100 933604 0 0 0 0 2056 5805 33 18 50 0 0
1 0 120 1354472 279108 933604 0 0 0 120 2208 5268 32 19 50 0 0
2 0 120 1354552 279112 933748 0 0 0 184 2458 6039 31 20 50 0 0
2 0 120 1353032 279124 933700 0 0 0 212 2425 6011 30 21 49 0 0
0 0 120 1379428 279148 933692 0 0 0 368 2375 4886 33 16 50 3 0
0 2 120 1379144 279152 933820 0 0 0 1516 2468 2690 4 2 55 40 0
0 0 120 1378948 279172 933908 0 0 0 256 2415 2528 1 0 93 7 0
0 0 120 1378948 279172 933872 0 0 0 0 2070 2276 0 0 100 0 0
0 0 120 1363644 279172 933780 0 0 0 0 1937 2356 7 1 92 0 0
0 0 120 1364372 279176 933680 0 0 0 40 2148 2319 0 0 99 1 0
0 0 120 1364448 279204 933760 0 0 0 4468 1738 2289 1 1 70 29 0
0 0 120 1364348 279228 933704 0 0 0 1064 1935 2296 0 0 92 9 0

marco
03.06.2009, 15:14
ImageMagick может тормозить если страницы с изображенями и конфигурация неправильная. Поиграйте с настройками ІМ.

Valery Romanchev
03.06.2009, 15:48
Новостей около 1500 (всего-то).

это тоже может вызвать проблему, текущая версия tt_news мало оптимизирована
Дело в том, что там есть запросы, забирающие все записи со всеми полями. Т.е. mysql может запросто посылать несколько десятков мб данных через небольшой буфер.
Другая проблема - это использование категорий при выводе списка новостей. Если стоит фильтр по категории - то возникают большие запросы с перечислениме uid новостей, типа uid NOT IN (1,23,200.... и тут тысяча чисел). Выполняются эти запросы быстро, но вот создаются они в пхп в цикле - поэтому проблема с скоростью

Lucifer
04.06.2009, 11:57
Валерий, а можно поподробнее о ускорении работы tt_news? У меня генерируется главная страница (по админпанеле) где то 3,5 сек, закешированая около 0,6. Что в принципе все равно много. Сервер выделеный, не слабый. На главной 9 лент новостей (через rgtabs, без аякса). Всего около 2к новостей на данном сайте, и около 4к в базе (несколько сайтов).

dmartynenko
05.06.2009, 18:24
Проверьте:
1. оптимизированность PHP - обязателен кэшер типа xCache
2. MySQL - хватает ли памяти для кэша?

У нас для страницы из кэша (с парой мелких USER_INT) типичное время 0.160-0.240 секунды (выделенный сервер с > 10000 уников в день).

В админ панели кстати виден лог по времени что и сколько генериться - весьма полезно для изучения. Например у нас из этих 0.160-0.240 на этап "Parse template" (т.е. на загрузку всех PHP файлов) уходит 0.120 секунд.

dizell
05.08.2009, 13:17
Продолжим.....
А может ли влиять кеширование страниц на производительность?
При 500 униках в день и 200 страниц на сайте, cashe_pages за сутки разрастается до 2000-4000 записей и размером 1-3 Гб.

dmartynenko
05.08.2009, 13:31
Продолжим.....
А может ли влиять кеширование страниц на производительность?
При 500 униках в день и 200 страниц на сайте, cashe_pages за сутки разрастается до 2000-4000 записей и размером 1-3 Гб.

Может: большой кэш - медленный кэш.

Но что-то у вас не так.

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

Но общий размер у вас многоват. Сейчас для примера глянул один из сайтов - 12000 записей занимают 800 Мб.

Обратите внимание, что в кэше сохраняется не только HTML код страницы, но и весь TS шаблон с ней связанный и соответственно исходный HTML код шаблона. Если они большие - то и весь кэш будет расти.

dizell
05.08.2009, 14:41
Два вопроса:
1.В нете есть tip по оптимизации:
disable completely any TYPO3 built-in statistics
Как отключить сбор статистики?

2. Где в админке посмотреть лог генерации по времени?

dmartynenko
05.08.2009, 14:52
1.В нете есть tip по оптимизации:
disable completely any TYPO3 built-in statistics
Как отключить сбор статистики?

По умолчанию ничего такого не включено.
Оно включается так:
config.stat = 1
config.stat_mysql = 1
config.stat_apache = 1

Соответственно выключается: = 0

2. Где в админке посмотреть лог генерации по времени?

Добавьте в шаблон:
config.admPanel = 1

При этом когда вы залогинены под админом в BE, в FE внизу страницы появится раскрываемый блок информации о генерации страницы. В том числе там будет подробный лог со времением что и сколько на этой странице генериться.

dizell
05.08.2009, 17:09
tnx a lot за поддержку.
админка показала следующее:
.....
/Page generation/pagegen.php, render 343 0 +9269 =9269
page PAGE 343 9233 +36 =9269
substituteMarkerArray
page 525 6
......
page.substituteMarkerArray 9584 0
/Page generation/Local anchor fix, all 9612 7
.....
хм!?

dizell
05.08.2009, 17:45
Ну и в зазвернутом листинге
............
RealURL warning: rootpage_id was not configured!

--------------------------------------------------------------------------------
RealURL warning: rootpage_id was not configured!

--------------------------------------------------------------------------------
RealURL warning: rootpage_id was not configured!

--------------------------------------------------------------------------------
RealURL warning: rootpage_id was not configured!

--------------------------------------------------------------------------------
RealURL warning: rootpage_id was not configured!
...................

Я так понимаю, настройка RealURL?

dmartynenko
05.08.2009, 17:48
tnx a lot за поддержку.
админка показала следующее:
.....
/Page generation/pagegen.php, render 343 0 +9269 =9269
page PAGE 343 9233 +36 =9269
substituteMarkerArray
page 525 6
......
page.substituteMarkerArray 9584 0
/Page generation/Local anchor fix, all 9612 7
.....
хм!?

Может скриншот?
А то в цифрах отступы тереются и несовсем ясно что и как.

dmartynenko
05.08.2009, 17:50
Я так понимаю, настройка RealURL?

Проверьте правильно ли настроен typo3conf/realurl_conf.php (если у вас не включен autoconf).

Вообщем читайте мануал.

Valery Romanchev
05.08.2009, 18:27
tnx a lot за поддержку.
админка показала следующее:
.....
/Page generation/pagegen.php, render 343 0 +9269 =9269
page PAGE 343 9233 +36 =9269
substituteMarkerArray
page 525 6
......
page.substituteMarkerArray 9584 0
/Page generation/Local anchor fix, all 9612 7
.....
хм!?
раскройте в админ панели все разделы и зажмите все чексбоксы
Тогда будет видно, какой конкретно модуль сколько времени дает.

Еще можно попробовать поскрывать блоки контента и посмотреть, какой будет эффект.

dizell
05.08.2009, 20:00
по RealURL стоит autoconf.
pageroot_id определен в localconf.php, но
/Process ID 125 5 +2 =7 RealURL warning: rootpage_id was not configured!
и дальше по отдельных модулях тот же варнинг.
Представлю лог разработчику.