Просмотр полной версии : Оптимизация скорости работы сайта
ДОбрый день
Вот такая ситуация.
есть чудо-сайт prazdnik-land.ru Typo3 3.8, PHP 4
кол-во посетителей за последний год примерно одинаковое 1000-1500 в день. За этот год пришлось несколько раз повышать тарифный план (т.е. увеличить доступные ресурсы: память, время процессора), а сайт работает все медленне и медленнее.
А совсем недавно дали рекламу страницы prazdnik-land.ru/limo
дак сайт вообще перестал работать на пару часов, хотя посетителей было не сказать чтобы уж очень много 2000 за день
собственно вопросы:
- какие срочные меры можно предпринять для исправления ситуации (кроме как добавить еще памяти)?
- поможет ли переход на новую версию TYPO3?
- правда ли что блок "Случайное фото" (случайным образом картинка выбирается этот блок USER_INT) на сайте делает все страницы не кешируемыми?
- "Page is being generated" в каком случае появляется?
- есть ли правила разработки плагинов с точки зрения оптимизации скорости работы?
Page is being generated - несколько посетителей одновременно запрашивают незакешированную еще страницу.
Случайные картинки проще делать JS. Если нет возможности -у вас вроде нет, там еще и ссылка - сделайте в iframe. Чтобы закешировать все возможное в статику.
чистите ли temp - файлы? Нет ли таблиц-гигантов?
Pavel Antonov
04.07.2007, 14:39
- поможет ли переход на новую версию TYPO3?
- правда ли что блок "Случайное фото" (случайным образом картинка выбирается этот блок USER_INT) на сайте делает все страницы не кешируемыми?
- "Page is being generated" в каком случае появляется?
- есть ли правила разработки плагинов с точки зрения оптимизации скорости работы?
Не думаю что поможет
Не совсем так. Cама страница кэшируется кроме блоков USER_INT. Но при этом все равно происходит инициализация TYPO3, соединение с базой и прочая и прочая...
Страница отсутствует в кэше и должна быть сгенерирована, но похоже сервер загружен.
По возиожности использовать USER (без всяких no_cache=1), что бы страницы попадали в кэш.Что можно посоветовать:
Выгрузка в статические файлы (nc_staticfilecache + RealURL)
Картинки перенести в JS. Если нужна связь с TYPO3 то использовать Ajax.
Проверить таблицы (статистики) на раздутие. Существуют ли индексы на таблицы? Проверьте скорость работы MySQL.
Valery Romanchev
04.07.2007, 16:28
выкините USER_INT с главной и др. основных страниц и после этого поставьте nc_staticfilecache + RealURL
(если USER_INT останется, то кеширования в статические файлы конечно не будет)
а еще поделитесь опытом как phpAds на сайте TYPO3 показывать?
js - тормозит страницу (пока все баннеры из phpAds не загрузятся страница не отображается)
xml-rpc создает много коннектов к серверу
iframe не всегда подходит
прямой вызов это USER_INT
а где/чем iframe не подходит? потому что оптимальны все-таки 2 и 3 способы.
Pavel Antonov
04.07.2007, 17:35
xml-rpc создает много коннектов к серверу
Статику можно переложить на ngnix или тогда сервер TYPO3 (apache) будут трогать только по "уважительным" поводам
не понял про картинки в JS.
я только такой вариант вижу
предварительно генерировать все файлы (т.к. картинки надо уменьшать)
и фомировать JS массив адресов типа typo3temp/pics/abvgde......jpg
или еще как-то?
если нет баннера то показывает пустое место
для текстовых не подходит
выкините USER_INT с главной и др. основных страниц и после этого поставьте nc_staticfilecache + RealURL
(если USER_INT останется, то кеширования в статические файлы конечно не будет)
это конечно замечательно, только как щас бороться с такими адресами
prazdnik-land.ru/typo3temp/tx_ncstaticfilecache/prazdnik-land.ru/limo/index.html/
http://prazdnik-land.ru/typo3temp/tx_ncstaticfilecache/prazdnik-land.ru/limo/limo/4/index.html/
и вот еще вопрос к знатокам TYPO3.
возьмем многострадальную страницу
http://prazdnik-land.ru/limo/index.html
эта страница кешируемая и на ней уже нет блоков USER_INT (nc_staticfilecache ее кешировал в файл)
для эксперимента отключим кеширование в статический файл
получается следующая ситуация
почти при каждом заходе на эту страницу вылезает
"Page Generated приходите завтра" (странно как люди увидев такую надпись потом приходят снова :confused: )
причем происходит 5, 6 а иногда и 7 редиректов до тех пор пока не появится нормальная страница.
что бы это значило?
если эту страницу сделать не кешируемой то она отображается сразу....
такая же ситуация на http://prazdnik-land.ru/catalog/page.html
если сделать кешированной то редиректов случается до 10 а иногда невозможно дождаться.
и ладно если бы это было первый раз, а потом уже выводились готовые данные, такое случается почти при каждом заходе на эту страницу...
что с этим делать????
и вот еще вопрос к знатокам TYPO3.
возьмем многострадальную страницу
http://prazdnik-land.ru/limo/index.html
эта страница кешируемая и на ней уже нет блоков USER_INT (nc_staticfilecache ее кешировал в файл)
для эксперимента отключим кеширование в статический файл
получается следующая ситуация
почти при каждом заходе на эту страницу вылезает
"Page Generated приходите завтра" (странно как люди увидев такую надпись потом приходят снова :confused: )
причем происходит 5, 6 а иногда и 7 редиректов до тех пор пока не появится нормальная страница.
что бы это значило?
если эту страницу сделать не кешируемой то она отображается сразу....
такая же ситуация на http://prazdnik-land.ru/catalog/page.html
если сделать кешированной то редиректов случается до 10 а иногда невозможно дождаться.
и ладно если бы это было первый раз, а потом уже выводились готовые данные, такое случается почти при каждом заходе на эту страницу...
что с этим делать????
видимо кончились знатоки TYPO3:confused:
Дылгеров Ц.В.
01.08.2007, 06:49
видимо кончились знатоки TYPO3:confused:
Навскидку:
Typo3 достаточно быстро растет, если посмотреть на http://typo3.org/extensions/ - видно что сегодня 31 июля было 10 апдейтов расширений.
Расширение nc_staticfilecache последний раз обновлялось 28.06.2007, а появилось сравнительно недавно: всего 3-ий апдейт - так что знатоков по связке RealURL+nc_staticfilecache не так уж много.
nc_staticfilecache тут не при чем, я так полагаю.
У вас некэшированная страница отображается сразу, а кэширование идёт медленно? Это нестандартная ситуация, обычно наоборот. Что мешает тогда вообще отключить кэш?)
Вопрос не про realUrl и staticfiles
а почему несколько раз подряд появляется "page generated"
ситуация следующая
страница page1, page2 , page3
на этих страницах нет USER_INT
галочки "без кеша" нет.
когда я перехожу с page1 по ссылке на page2
случаетя "page generated" несколько раз подряд
(т.е появляется "page generated", после автоматической перезагрузки
снова "page generated" и так может повторяться очень долго)
когда появляется страница page2
тыкаю по ссылке на страницу page3 (она тоже может загрузиться только после нескольких "page generated")
и затем c page3 пытаюсь перейти на page2 и снова получаю несколько раз "page generated". почему? ведь уже один раз эту страницу page2загрузили и закешировали,. вот это мне непонятно. в чем причина такого поведения. или в чем тогда смысл системы кеширования страниц. чего оно кеширует?
если страницы "без кеша" то появляются они сразу, но когда на сайт приходят 400 человек в час, то сайт тихо умирает....
400 это пиковые нагрузки, даже 200 это предел
Тот же nc_staticfilecache (или staticpub/cachemgm) говорит, кэширована ли страница, и если нет, то почему. Действительно ли кэшируются страницы?
Valery Romanchev
02.08.2007, 17:35
можнов вставить devlog в том место, где генериться надпись "Page is being..." и станет понятно в чем дело
Я такое поведение видел одни раз - давно. Тогда не разбирался, просто закомментировал в коде кусок связанный с "Page is being..." - это только в одном месте закоментировать
... еще надо базу починить.. хотя Вы наверняка это уже делали.
От битых таблиц бывают вообще разные глюки. К примеру в какую-то таблицу ничего не пишется. и вообще ничего не кешируется.
копался я в коде typo3
и нашел такую функцию в tslib/class.tslib_fe.php
/**
* Temp cache content
* The temporary cache will expire after a few seconds (typ. 30) or will be cleared by the rendered page, which will also clear and rewrite the cache.
*
* @return void
*/
function tempPageCacheContent() {
$this->tempContent = FALSE;
if (!$this->no_cache) {
$seconds = 30;
$stdMsg = '
<html>
<head>
<title>'.htmlspecialchars($this->tmpl->printTitle($this->page['title'])).'</title>
<meta http-equiv="refresh" content="3; URL='.htmlspecialchars(t3lib_div::getIndpEnv('REQU EST_URI')).'" />
</head>
<body bgcolor="white">
<div align="center" style="font-family:Verdana,Arial,Helvetica" color="#cccccc">
<strong>Page is being generated.</strong><br />
If this message does not disappear within '.$seconds.' seconds, please reload.
</div>
</body>
</html>';
$temp_content = $this->config['config']['message_page_is_being_generated'] ? $this->config['config']['message_page_is_being_generated'] : $stdMsg;
// $this->setPageCacheContent($temp_content, '', $GLOBALS['EXEC_TIME']+$seconds);
$this->tempContent = TRUE; // This flag shows that temporary content is put in the cache
}
}
и закомментировал в ней одну строку
// $this->setPageCacheContent($temp_content, '', $GLOBALS['EXEC_TIME']+$seconds);
и проблема о которой я писал (многократное повторение page generated....) решилась.
страницы стали кешироваться и время отклика страниц заметно уменьшилось.
вопрос только остался, а зачем страницу "page is been generated..."
сохранять в таблицу cache_pages???
Dutchak Vitaly
08.08.2007, 23:58
Ну так этот кэш действителен 30 секунд. Если не получается получить HTML код кэшируемой страницы, то ставится этот кэш, через 30 секунд его время выходит, опять TYPO3 смотрит HTML код кэшируемой страницы, если не может получить - опять ставит временный кэш и выдает его и так пока не закэшируется страница.
Вот вроде бы просто описал схемку работы )
кеш на 30 секунда а на странице рефреш стоит через 3 сек.
т.е. она будет обновляться каждые 3 секунды и снова показывать "page generated"
а вообще какой смысл в этой странице (объясните мне высший смысл всего происходящего, а то я чего-то расстроен сильно)?
например можно было бы предположить что механизм кеширования примерно такой:
если страница не сгенерировалась за 5мс (ну или 20мс) , то
выводится заглушка "page generated" и стартует процесс который генерит запрошенную страницу и складывает ее в таблицу кешированных страниц
через какое-то время страница "page generated" автоматически обновляется и уже выводится страница с осмысленным содержанием.
но сейчас ведь не так (или поправьте меня)
получается, что, эта страница используется для того чтобы переждать некоторое время, может быть через 30 секунд что-то изменится и удастся сгенерировать страницу.
Dutchak Vitaly
10.08.2007, 00:10
Обычно когда сервер загружен, или какой-то скрипт грузит сервер, тогда и выскакивает данный кэш. Попробуйте по-убирать некоторые модули посмотреть, что именно грузит сервер. Может где-то рекурсия кривая или еще что
Valery Romanchev
10.08.2007, 01:14
кеш на 30 секунда а на странице рефреш стоит через 3 сек.
т.е. она будет обновляться каждые 3 секунды и снова показывать "page generated"
а вообще какой смысл в этой странице (объясните мне высший смысл всего происходящего, а то я чего-то расстроен сильно)?
например можно было бы предположить что механизм кеширования примерно такой:
если страница не сгенерировалась за 5мс (ну или 20мс) , то
выводится заглушка "page generated" и стартует процесс который генерит запрошенную страницу и складывает ее в таблицу кешированных страниц
через какое-то время страница "page generated" автоматически обновляется и уже выводится страница с осмысленным содержанием.
но сейчас ведь не так (или поправьте меня)
получается, что, эта страница используется для того чтобы переждать некоторое время, может быть через 30 секунд что-то изменится и удастся сгенерировать страницу.
Ну вроде ситуация рассчитана на то, что сразу 20 юзеров могут запросить одну не закешированную страницу.
dmartynenko
10.08.2007, 18:54
для эксперимента отключим кеширование в статический файл
получается следующая ситуация
почти при каждом заходе на эту страницу вылезает
"Page Generated приходите завтра" (странно как люди увидев такую надпись потом приходят снова :confused: )
причем происходит 5, 6 а иногда и 7 редиректов до тех пор пока не появится нормальная страница.
что бы это значило?
если эту страницу сделать не кешируемой то она отображается сразу....
У меня было несколько раз так, что повреждались таблицы кеша (в том числе таблицы кеша realurl). Сайт при этом имел тенденцию очень часто подвисать (у нас 2000-4000 посетителей в сутки и много динамического контента) .
На сколько я понимаю в такой ситуации внутреннии механизмы генерации и кеширования работают, но не правильно. Причем никаких ошибок в FE не выдается, поэтому заметить такую ситуацию не возможно.
Проверьте все таблицы в базе typo3 при помощи phpMyAdmin и воспользуйтесь функцией "починить" при необходимости.
У меня было несколько раз так, что повреждались таблицы кеша (в том числе таблицы кеша realurl). Сайт при этом имел тенденцию очень часто подвисать (у нас 2000-4000 посетителей в сутки и много динамического контента) .
На сколько я понимаю в такой ситуации внутреннии механизмы генерации и кеширования работают, но не правильно. Причем никаких ошибок в FE не выдается, поэтому заметить такую ситуацию не возможно.
Проверьте все таблицы в базе typo3 при помощи phpMyAdmin и воспользуйтесь функцией "починить" при необходимости.
такую проверку я в Cron добавил. каждый день таблицы проверяются
только все нормально было (т.е. еще не сталкивался с тем чтобы таблицы повреждались)
Вчера запустил на сервере три сайта, полёт номральный, сегодня довел число запущенных до 10 и начались тормоза. Не сразу, сразу бегало достаточно бодро. А сейчас в cache_pages лежит за 200 записей, исходя из вышенаписанного, это всё временный кэш, что-то многовато :(
Таблицы проверял - ошибок нет.
Что делать, как эффективно найти узкое место?
По отладочному дампу сложно сказать, что именно тормозит - больших скачков по временным интервалам нет.
dmartynenko
03.10.2007, 20:14
А сейчас в cache_pages лежит за 200 записей, исходя из вышенаписанного, это всё временный кэш, что-то многовато :(
Что делать, как эффективно найти узкое место?
У меня есть подозрение, что у вас где-то стоит глобальный no_cache.
Либо в одном из расширений, либо где-то в TS.
У меня для одного только сайта в cache_pages больше 4-х тысяч страниц, общим объемом в полгига.
Там ошибка была в другом кэше, не тайповском. Решена.
В общем счас проект запущен, нагрузка даже ниже, чем на старых сайтах на 3.8, я очень рад, попозже отпишусь по поводу.
В cache_pages за полсуток набилось около 500 страниц, а в cache_pages старого сайта висело всего 2 записи, в cache_hash - 2,5M. я просто всё не пойму, сравнивая со старым сайтом - так много должно быть записей в cache_pages или нет? :)
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot