Forums / National / Russian / Тех. поддержка / Проблемы с кешем

Oughtem
#1 2012-04-04 13:45

Сейчас делаем модуль магазина. Магазин довольно объёмный. При его росте стал ребром вопрос со скоростью работы. Есть предположение, что когда создается много файлов в папке "templates", то именно тогда работа сайта резко замедляется.

Хостер пишет:

Страницы медленно возвращаются сервером потому что происходит очень долгая их генерация:

$ time php -d register_globals=0 index.php > /dev/null

real 0m12.139s
user 0m2.604s
sys 0m0.072s

Помогите побороть.

Trustmaster
#2 2012-04-04 15:40

Отключите кеширование шаблонов в config.php $cfg['xtpl_cache'] и посмотрите, стало ли легче. И ещё включите devmode и посмотрите статистику по SQL запросам.

May the Source be with you!
Oughtem
#3 2012-04-04 16:27

xtpl_cache отключил сразу. Но ощутимого облегчения не ощутил. Сейчас стоит вот так:

$cfg['cache'] = TRUE; 

$cfg['xtpl_cache'] = FALSE;    

и всё равно тормозит. Что такое devmode и как его вкчлюить?

Trustmaster
#4 2012-04-04 16:46

Devmode - это вывод статистики скорости выполнения SQL запросов. Ещё с Seditio есть такая штука. Включается так:

  1. В Админке / Конфигурации / Основных настройках включаем "Режим отладки".
  2. В Админке / Конфигурации / Темы включаем "Показывать статистику SQL-запросов".
  3. В footer.tpl добавляем: {FOOTER_DEVMODE}.

Далее под админом смотрим в подвале таблицу с длительностью запросов. Но для начала надо вообще сопоставить время генерации страницы и время обработки SQL запросов (соотв. теги есть там же, в footer).

May the Source be with you!
Wadik
#5 2012-04-04 17:59

Возможно в рамках данного вопроса интересно узнать(увидел что в этом проекте очень много категорий), сколько категорий выдержит кэш категорий? В базе данных, где хранится кеш тип данных "text", а это значит, что максимум 64кб текста влезет. Думаю это не много для хорошо каталогизированного проекта.

Изменять в "MEDIUMTEXT " смысла наверное тоже нет. Думаю, может имеет смысл пересмотреть кеширование категорий?! 

Oughtem
#6 2012-04-04 20:41

прикольная штука этот {FOOTER_DEVMODE}. Кажется я понял в чём дело: у меня был включен плуг pagecattree, который безбожно гнул систему при моих 720 категориях. Может кто подсткажет другой плагин для вывода каталога товаров или допилит этот плуг под мои требования (за денюжку разумеется)? 

Какой "нормальный" показатель количества запросов для страницы? У меня вот что отдаёт на одной из страниц:

QL query	Duration	Timeline	Query
BEGIN	0.000 ms	 
#26  	1.001 ms	139.549 ms	SELECT p.*, u.* FROM cot_pages AS p LEFT JOIN cot_users AS u ON u.user_id=p.page_ownerid WHERE page_id=654 LIMIT 1
#27  	0.796 ms	148.275 ms	SELECT `tag`, `tag_item` FROM cot_tag_references WHERE tag_item = 654 AND tag_area = 'pages'
#28  	0.048 ms	149.380 ms	SELECT gru_groupid FROM cot_groups_users WHERE gru_userid = '1'
#29  	0.044 ms	149.468 ms	SELECT br_id FROM cot_brlight_zones WHERE br_active = '1' AND br_location LIKE '%%' AND (br_groups LIKE '%5%')
#30  	0.425 ms	149.543 ms	SELECT * FROM cot_brlight_banners WHERE br_active = '1' AND ( br_expire = '0' OR br_expire > '1333571738') AND br_zone = '1' ORDER BY br_lastshown ASC LIMIT 1
#31  	0.187 ms	150.035 ms	UPDATE cot_brlight_banners SET br_lastshown = '1333571738' WHERE br_id = '1' LIMIT 1
#32  	0.114 ms	150.250 ms	UPDATE cot_brlight_stats SET br_views = br_views + 1 WHERE br_id = '1' AND br_date = '1333497601' LIMIT 1
#33  	0.193 ms	150.399 ms	SELECT * FROM cot_brlight_banners WHERE br_active = '1' AND ( br_expire = '0' OR br_expire > '1333571738') AND br_zone = '2' ORDER BY br_lastshown ASC LIMIT 1
#34  	0.163 ms	150.644 ms	UPDATE cot_brlight_banners SET br_lastshown = '1333571738' WHERE br_id = '2' LIMIT 1
#35  	0.095 ms	150.834 ms	UPDATE cot_brlight_stats SET br_views = br_views + 1 WHERE br_id = '2' AND br_date = '1333497601' LIMIT 1
#36  	0.430 ms	151.008 ms	UPDATE `cot_online` SET `online_lastseen`=1333571738,`online_location`='pages',`online_subloc`='Техногрес Мираж',`online_hammer`=0 WHERE online_userid=1
#37  	0.154 ms	151.575 ms	DELETE FROM `cot_online` WHERE online_lastseen < 1333570538
#38  	0.913 ms	151.750 ms	SELECT COUNT(*) FROM cot_online WHERE online_name='v'
#39  	1.415 ms	152.697 ms	SELECT DISTINCT o.online_name, o.online_userid FROM cot_online o WHERE o.online_name != 'v' ORDER BY online_name ASC
#40  	0.068 ms	178.697 ms	SELECT COUNT(*) FROM cot_pages WHERE page_state=1
#41  	0.050 ms	179.505 ms	SELECT COUNT(*) FROM cot_contact WHERE contact_val=0
#42  	0.156 ms	179.845 ms	UPDATE `cot_stats` SET `stat_value`=2 WHERE stat_name='maxusers'
#43  	0.116 ms	246.052 ms	SELECT * FROM cot_pagemavatar WHERE mav_pid = 654 ORDER BY mav_item
#44  	0.053 ms	248.000 ms	SELECT c_value FROM cot_cache WHERE c_realm = 'users' AND c_name = 'cot_userimages_config'
#45  	0.468 ms	258.585 ms	SELECT COUNT(*) FROM cot_com WHERE com_area = ? AND com_code = ?
#46  	0.303 ms	262.855 ms	SELECT c.*, u.* FROM cot_com AS c LEFT JOIN cot_users AS u ON u.user_id = c.com_authorid WHERE com_area = ? AND com_code = ? ORDER BY com_id DESC LIMIT ?, ?
#47  	0.277 ms	269.111 ms	SELECT * FROM cot_ratings WHERE rating_area = ? AND rating_code = ? LIMIT 1
#48  	0.256 ms	269.466 ms	SELECT rated_value FROM cot_rated WHERE rated_area = ? AND rated_code = ? AND rated_userid = ?
#49  	0.414 ms	281.861 ms	SELECT DISTINCT ipage_locale FROM cot_i18n_pages WHERE ipage_id = ?
#50  	0.522 ms	290.677 ms	SELECT COUNT(*) AS rw_cnt, MAX(rw_date) AS rw_max, COUNT(rw_recommend) AS rw_rec, AVG(rw_price) AS rw_price, AVG(rw_rating) AS rw_rating, AVG(rw_rateavg) AS rw_rateavg FROM cot_reviews WHERE rw_page = 654
#51  	0.677 ms	291.368 ms	SELECT r.*, u.* FROM cot_reviews AS r LEFT JOIN cot_users AS u ON r.rw_user = u.user_id WHERE rw_page = 654 ORDER BY rw_id DESC LIMIT 0,15
#52  	0.255 ms	319.216 ms	SELECT pp.*, m.page_id as manufacturer_id, m.page_title as mf_name, m.page_desc as mf_desc, m.page_cat as mf_cat, m.page_alias as mf_alias FROM cot_shop_product_prices as pp LEFT JOIN cot_pages as m ON m.page_id=0 WHERE pp.product_id=654
#53  	0.418 ms	332.917 ms	SELECT mc_pagecat FROM cot_multicat WHERE mc_pageid='654'
#54  	1.048 ms	337.096 ms	SELECT page_text, page_parser FROM cot_pages WHERE page_id = ?
END	0.339 ms	 


Total:0s - Queries:54 - Average:0s/q

 

Dayver
#7 2012-04-04 20:47

Немного офтопика

Trustmaster, вот видишь то о чем я говорил - детализация запросов начинается с 26 запроса (у меня число меньше), а потому узнать что в первых 26 штуках не представляется возможным. - баг

Pavlo Tkachenko aka Dayver