1500 запросов на главной - кто больше?
Прислано: volocuga
пн, 08/03/2010 - 00:52
Давно не пользовался devel,а вот давеча решил проверить. Сподвигнул тот факт, что иногда при творчестве на локалхосте, бывает, глохнет плеер на компе...я провёл связь с работающим в то же время друпалом и не ошибся :)
Сервачок я так понял уже сейчас стоит покупать? :)
Собственно вопрос: а у кого больше?
ЗЫ. штук 80 модулей,ничего особенного. Не обошлось без вьюсов :)
- volocuga's blog
- Для комментирования войдите или зарегистрируйтесь
80 на главной
- Для комментирования войдите или зарегистрируйтесь
42 на главной
- Для комментирования войдите или зарегистрируйтесь
Поправка: под админом, без кєша.
- Для комментирования войдите или зарегистрируйтесь
135 тысяч нод.
~200 000 терминов
<div class="dev-query">Executed 42 queries in 7.13 milliseconds. Queries taking longer than 5 ms and queries executed more than once, are <span class="marker">highlighted</span>. Page execution time was 151.95 ms.</div>
- Для комментирования войдите или зарегистрируйтесь
Ну и вот, полный лог для желающих пересчитывать:
<div class="dev-query">Executed 42 queries in 6.37 milliseconds. Queries taking longer than 5 ms and queries executed more than once, are <span class="marker">highlighted</span>. Page execution time was 153.17 ms.</div><div class='devel-querylog devel-querylog-header clear-block'><div class="cell cell-1">ms</div><div class="cell cell-2">#</div><div class="cell cell-3">where</div><div class="cell cell-4">query</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.71</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/menu_local_tasks">menu_local_tasks</a></div><div class="cell cell-4">SELECT * FROM menu_router WHERE tab_root = 'node/%' ORDER BY weight, title</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.54</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/menu_get_item">menu_get_item</a></div><div class="cell cell-4">SELECT * FROM menu_router WHERE path IN ('node/48264','node/%','node') ORDER BY fit DESC LIMIT 0, 1</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.53</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/drupal_get_filename">drupal_get_filename</a></div><div class="cell cell-4">SELECT filename FROM system WHERE name = 'osmi2' AND type = 'theme'</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.45</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/cache_get">cache_get</a></div><div class="cell cell-4">SELECT data, created, headers, expire, serialized FROM cache WHERE cid = 'schema'</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.37</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/node_load">node_load</a></div><div class="cell cell-4">SELECT n.nid, n.type, n.language, n.uid, n.status, n.created, n.changed, n.comment, n.promote, n.moderate, n.sticky, n.tnid, n.translate, r.vid, r.uid AS revision_uid, r.title, r.body, r.teaser, r.log, r.timestamp AS revision_timestamp, r.format, u.name, u.picture, u.data FROM node n INNER JOIN users u ON u.uid = n.uid INNER JOIN node_revisions r ON r.vid = n.vid WHERE n.nid = '48264'</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.37</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/node_load">node_load</a></div><div class="cell cell-4">SELECT n.nid, n.type, n.language, n.uid, n.status, n.created, n.changed, n.comment, n.promote, n.moderate, n.sticky, n.tnid, n.translate, r.vid, r.uid AS revision_uid, r.title, r.body, r.teaser, r.log, r.timestamp AS revision_timestamp, r.format, u.name, u.picture, u.data FROM node n INNER JOIN users u ON u.uid = n.uid INNER JOIN node_revisions r ON r.vid = n.vid WHERE n.nid = 48264</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.35</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/cache_get">cache_get</a></div><div class="cell cell-4">SELECT data, created, headers, expire, serialized FROM cache WHERE cid = 'theme_registry:osmi2'</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.21</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/sess_write">sess_write</a></div><div class="cell cell-4">UPDATE sessions SET uid = 1, cache = 0, hostname = '109.188.102.22', session = '', timestamp = 1268014434 WHERE sid = 'b9a5ada6cb2142eea6d638aefc6436c2'</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.2</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/cache_get">cache_get</a></div><div class="cell cell-4">SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:ea7a88bd6b47e57155221f45daf829ce'</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.17</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/node_last_viewed">node_last_viewed</a></div><div class="cell cell-4">SELECT timestamp FROM history WHERE uid = 1 AND nid = 48264</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.15</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/node_tag_new">node_tag_new</a></div><div class="cell cell-4">UPDATE history SET timestamp = 1268014434 WHERE uid = 1 AND nid = 48264</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.12</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/module_list">module_list</a></div><div class="cell cell-4">SELECT name, filename, throttle FROM system WHERE type = 'module' AND status = 1 ORDER BY weight ASC, filename ASC</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.09</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/list_themes">list_themes</a></div><div class="cell cell-4">SELECT * FROM system WHERE type = 'theme'</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.09</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/block_block">block_block</a></div><div class="cell cell-4">SELECT body, format FROM boxes WHERE bid = 4</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.09</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/language_list">language_list</a></div><div class="cell cell-4">SELECT * FROM languages ORDER BY weight ASC, name ASC</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.09</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/_node_types_build">_node_types_build</a></div><div class="cell cell-4">SELECT nt.type, nt.* FROM node_type nt ORDER BY nt.type ASC</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.08</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/eval">eval</a></div><div class="cell cell-4">SELECT nid from clientpages where uid=1</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.08</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/block_list">block_list</a></div><div class="cell cell-4">SELECT DISTINCT b.* FROM blocks b LEFT JOIN blocks_roles r ON b.module = r.module AND b.delta = r.delta WHERE b.theme = 'osmi2' AND b.status = 1 AND (r.rid IN (2,3,4,5,13,14) OR r.rid IS NULL) ORDER BY b.region, b.weight, b.module</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.08</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/module_list">module_list</a></div><div class="cell cell-4">SELECT name, filename, throttle FROM system WHERE type = 'module' AND status = 1 AND bootstrap = 1 ORDER BY weight ASC, filename ASC</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.08</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/cache_get">cache_get</a></div><div class="cell cell-4">SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '1:bc8db0429106ace5e26db57b489290d5'</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.08</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/drupal_get_filename">drupal_get_filename</a></div><div class="cell cell-4">SELECT filename FROM system WHERE name = 'user' AND type = 'module'</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.08</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/_node_revision_access">_node_revision_access</a></div><div class="cell cell-4">SELECT COUNT(vid) FROM node_revisions WHERE nid = 48264</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/eval">eval</a></div><div class="cell cell-4">select count(*) from node n INNER JOIN itemapprovestat a ON a.nid=n.nid WHERE n.created > 1267995600 AND n.uid=1</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/eval">eval</a></div><div class="cell cell-4">SELECT count(*) FROM itemapprovestat WHERE uid=1</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/block_block">block_block</a></div><div class="cell cell-4">SELECT body, format FROM boxes WHERE bid = 10</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/cache_get">cache_get</a></div><div class="cell cell-4">SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:636601dfcd602ebf34e34758b0f2883f'</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.07</div><div class="marker cell cell-2">2</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/comment_nodeapi">comment_nodeapi</a></div><div class="cell cell-4">SELECT last_comment_timestamp, last_comment_name, comment_count FROM node_comment_statistics WHERE nid = 48264</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/block_block">block_block</a></div><div class="cell cell-4">SELECT body, format FROM boxes WHERE bid = 11</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/eval">eval</a></div><div class="cell cell-4">SELECT count(*) FROM node WHERE uid=1 AND created > 1267995600</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/system_region_list">system_region_list</a></div><div class="cell cell-4">SELECT info FROM system WHERE type = 'theme' AND name = 'osmi2'</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/filter_format_allowcache">filter_format_allowcache</a></div><div class="cell cell-4">SELECT cache FROM filter_formats WHERE format = 2</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/taxonomy_vocabulary_load">taxonomy_vocabulary_load</a></div><div class="cell cell-4">SELECT v.*, n.type FROM vocabulary v LEFT JOIN vocabulary_node_types n ON v.vid = n.vid WHERE v.vid = 5</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/taxonomy_node_get_terms">taxonomy_node_get_terms</a></div><div class="cell cell-4">SELECT t.* FROM term_node r INNER JOIN term_data t ON r.tid = t.tid INNER JOIN vocabulary v ON t.vid = v.vid WHERE r.vid = 48265 ORDER BY v.weight, t.weight, t.name</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.07</div><div class="marker cell cell-2">2</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/comment_nodeapi">comment_nodeapi</a></div><div class="cell cell-4">SELECT last_comment_timestamp, last_comment_name, comment_count FROM node_comment_statistics WHERE nid = 48264</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/eval">eval</a></div><div class="cell cell-4">SELECT count FROM itemcreatestat WHERE uid=1</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/cache_get">cache_get</a></div><div class="cell cell-4">SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:8a29114bbb93081d59fe1a0ba0a332f6'</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/cache_get">cache_get</a></div><div class="cell cell-4">SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:6856c385b978dcb5b58682515d2f28eb'</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/block_block">block_block</a></div><div class="cell cell-4">SELECT body, format FROM boxes WHERE bid = 6</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/filter_list_format">filter_list_format</a></div><div class="cell cell-4">SELECT * FROM filters WHERE format = 3 ORDER BY weight, module, delta</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.07</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/filter_format_allowcache">filter_format_allowcache</a></div><div class="cell cell-4">SELECT cache FROM filter_formats WHERE format = 3</div></div><div class='devel-querylog devel-querylog-odd clear-block'><div class="cell cell-1">0.06</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/drupal_lookup_path">drupal_lookup_path</a></div><div class="cell cell-4">SELECT COUNT(pid) FROM url_alias</div></div><div class='devel-querylog devel-querylog-even clear-block'><div class="cell cell-1">0.06</div><div class="cell cell-2">1</div><div class="cell cell-3"><a href="http://api.drupal.org/api/6/function/filter_list_format">filter_list_format</a></div><div class="cell cell-4">SELECT * FROM filters WHERE format = 2 ORDER BY weight, module, delta</div></div><div class="dev-memory-usage"><h3>Memory usage:</h3> Memory used at: devel_init()=<strong>1.13</strong> MB, devel_shutdown()=<strong>10.44</strong> MB.</div>
- Для комментирования войдите или зарегистрируйтесь
Жесть какая, бугога.
Эт вы че там наворочили?!
- Для комментирования войдите или зарегистрируйтесь
А я думал у меня много :)
- Для комментирования войдите или зарегистрируйтесь
Эт вы че там наворочили?!
Я же говорю, никаких особенных модулей, на главной в блоках выводится штук 8 видов - думаю не ахти как много. Среди тяжёлых - Views,ССK,Uc_views
35 типов нод,немного терминов и нод (по пару тыщ)
Топ 10 самых медленных запросов. Ради приличия, полный лог в 1.2мб не стал сюда постить
Удивительно, что есть запросы видов, которые ВООБЩЕ не загружаются на главной. Очень много запросов вида taxonomy_node_get_terms,taxonomy_get_vocabularies. С чего бы? У меня штук 30 словарей, и что, они все опрашиваются?
Прожорливые модули (все нужные): nodewords,xmlsitemap,i18n,ubercart и конечно же views
Memory usage:
Memory used at: devel_init()=3.53 MB, devel_shutdown()=45.19 MB.
Executed 1312 queries in 6020.44 milliseconds. Queries taking longer than 5 ms and queries executed more than once, are highlighted. Page execution time was 15578.05 ms.
ms
#
where
query
667.66
1
execute
SELECT COUNT(*) FROM (SELECT uc_order_products.order_product_id AS order_product_id FROM uc_order_products uc_order_products LEFT JOIN uc_orders uc_orders ON uc_order_products.order_id = uc_orders.order_id LEFT JOIN node node ON uc_order_products.nid = node.nid LEFT JOIN uc_products uc_products ON uc_order_products.nid = uc_products.nid WHERE uc_orders.uid = 1 ) count_alias
303.1
1
execute
SELECT uc_order_products.order_product_id AS order_product_id, uc_order_products.qty AS uc_order_products_qty, uc_orders.created AS uc_orders_created, uc_orders.order_status AS uc_orders_order_status, node.title AS node_title, node.nid AS node_nid, node.language AS node_language, uc_orders.order_id AS uc_orders_order_id FROM uc_order_products uc_order_products LEFT JOIN uc_orders uc_orders ON uc_order_products.order_id = uc_orders.order_id LEFT JOIN node node ON uc_order_products.nid = node.nid LEFT JOIN uc_products uc_products ON uc_order_products.nid = uc_products.nid WHERE uc_orders.uid = 1 ORDER BY uc_orders_created DESC LIMIT 0, 3
159.9
1
pre_render
SELECT vid AS _vid, delta as _delta, nid AS _nid, field_image_cache_fid AS fid, field_image_cache_list AS list, field_image_cache_data AS data FROM content_field_image_cache WHERE vid IN (1344,1375,1374) ORDER BY _nid ASC, _delta ASC
154.78
1
simplenews_user_is_subscribed
SELECT COUNT(*) FROM simplenews_subscriptions s INNER JOIN simplenews_snid_tid t ON s.snid = t.snid WHERE s.mail = 'ymakux@gmail.com' AND t.tid = 707
137.65
1
execute
SELECT DISTINCT(node.nid) AS nid, node.type AS node_type, node.title AS node_title, node.language AS node_language, votingapi_cache_node_average.value AS votingapi_cache_node_average_value FROM node node INNER JOIN votingapi_cache votingapi_cache_node_average ON node.nid = votingapi_cache_node_average.content_id AND (votingapi_cache_node_average.content_type = 'node' AND votingapi_cache_node_average.function = 'average') WHERE (node.type IN ('product','bags','tents','sleeping_bags','shoe','clothes','other_products','ownerless','gps','snowboard','ski','bike','knife','used_ski','used_snowboard','used_snow_boots','guidebook','product_kit')) AND (node.status <> 0) AND (votingapi_cache_node_average.value > 0) GROUP BY nid ORDER BY votingapi_cache_node_average_value DESC LIMIT 0, 10
137
1
execute
SELECT node.nid AS nid, node_data_field_carousel_banner.field_carousel_banner_fid AS node_data_field_carousel_banner_field_carousel_banner_fid, node_data_field_carousel_banner.field_carousel_banner_list AS node_data_field_carousel_banner_field_carousel_banner_list, node_data_field_carousel_banner.field_carousel_banner_data AS node_data_field_carousel_banner_field_carousel_banner_data, node.language AS node_language, node.type AS node_type, node.vid AS node_vid, node.created AS node_created FROM node node LEFT JOIN content_type_carousel node_data_field_carousel_banner ON node.vid = node_data_field_carousel_banner.vid WHERE (node.type in ('carousel')) AND (node.status <> 0) ORDER BY node_created DESC LIMIT 0, 2
136.13
1
execute
SELECT node.nid AS nid, node.vid AS node_vid, node.type AS node_type, node.title AS node_title, node.language AS node_language, node.sticky AS node_sticky, node.changed AS node_changed FROM node node WHERE node.status <> 0 ORDER BY node_sticky ASC, node_changed DESC LIMIT 0, 3
121.09
1
taxonomy_term_count_nodes
SELECT t.tid, COUNT(n.nid) AS c FROM term_node t INNER JOIN node n ON t.vid = n.vid WHERE (n.language ='uk' OR n.language ='' OR n.language IS NULL) AND ( n.status = 1 )GROUP BY t.tid
93.82
1
locale
SELECT s.lid, t.translation, s.version FROM locales_source s LEFT JOIN locales_target t ON s.lid = t.lid AND t.language = 'uk' WHERE s.source = 'The default handler alterer is simply responsible for prefixing various product prices for display.' AND s.textgroup = 'default'
93.62
1
execute
SELECT node.nid AS nid, node_data_field_trademark_desc_logo.field_trademark_desc_logo_fid AS node_data_field_trademark_desc_logo_field_trademark_desc_logo_fid, node_data_field_trademark_desc_logo.field_trademark_desc_logo_list AS node_data_field_trademark_desc_logo_field_trademark_desc_logo_list, node_data_field_trademark_desc_logo.field_trademark_desc_logo_data AS node_data_field_trademark_desc_logo_field_trademark_desc_logo_data, node.language AS node_language, node.type AS node_type, node.vid AS node_vid, RAND() AS _random FROM node node LEFT JOIN content_type_trademark_desc node_data_field_trademark_desc_logo ON node.vid = node_data_field_trademark_desc_logo.vid WHERE (node.status <> 0) AND (node.type in ('trademark_desc')) AND (node.language in ('uk')) ORDER BY _random ASC LIMIT 0, 20- Для комментирования войдите или зарегистрируйтесь
Вот что бывает когда люде не понимают что такое друпал.
- Для комментирования войдите или зарегистрируйтесь
А что такое друпал? Вы предлагаете писать по каждому поводу сниппет? Шаг вправо,шаг влево - снова лазить в код?
Но извините,в этом случае это будет:
1) НЕДОфреймворк и НЕДОcms. Ни рыба, ни мясо
2) Смысла заморачиваться с друпалом, если ДЕШЕВЛЕ и ПРОЩЕ написать с нуля под себя?
- Для комментирования войдите или зарегистрируйтесь
А что такое друпал? Вы предлагаете писать по каждому поводу сниппет? Шаг вправо,шаг влево - снова лазить в код?
Но извините,в этом случае это будет:
1) НЕДОфреймворк и НЕДОcms. Ни рыба, ни мясо
2) Смысла заморачиваться с друпалом, если ДЕШЕВЛЕ и ПРОЩЕ написать с нуля под себя?
Вы не последовательны в своих эмоциональных выводах. Возмущаясь количеством запросов, формируемых Виевсом, обвиняете в этом сам движек.
Как вами было правильно подмечено в другом посте, Друпал это «две кучки кода» - собственно апи и результат его интерпретации. Пользуясь уже приготовленными кем-то решениями, вы используете Друпал, как CMS. Тут нет возражений? Будем считать, что нет. Так вот, при восприятии его в образе CMS - двиг полное фуфло, в моем видении и в соответствии с собственным опытом по крайней мере. Ценность Друпала состоит в его «фреймворкости». Так в чем суть негодований ваших? Не используйте Виевс. Напишите свое решение: используя АПИ Друпала «ДЕШЕВЛЕ и ПРОЩЕ», а главное - РАЗУМНЕЙ - будет именно это.
- Для комментирования войдите или зарегистрируйтесь
Выводите инфу через views не с помощью node, а с помощью полей. Если выводить с помощью node, то минимум для создания каждой ноды потребуется выполнить дополнительно порядка 50ть запросов и провести кучу работы php скриптам (например если у вас будет штук 40 нод на главной странице, то считайте это будет что то около 2k запросов, вместо 5ти - 10ти с помощью полей, да и нагрузка на php куда серьезнее), а для чего спрашивается? Только чтобы сделать каталоговое отображение информации, в общем ползуейте вариант с полями. Ну и учите матчасть, без этого не куда.
- Для комментирования войдите или зарегистрируйтесь
Executed 42 queries
Еще бы, всего 1 нода :) (Кстати, почему node_load() 2 раза?)
И алиасов путей видимо нет совсем.
- Для комментирования войдите или зарегистрируйтесь
Еще бы, всего 1 нода :) (Кстати, почему node_load() 2 раза?)
Хз, надо смотреть, я этот проект уже более полугода не веду, может нынешние программисты чего-то намутили. Но нода там одна должна быть.
- Для комментирования войдите или зарегистрируйтесь
Выводите инфу через views не с помощью node, а с помощью полей.
Всегда вывожу именно полями. Ладно с вьюсами. Почему nodeword, чтобы вывести текст в 2 тега обращается к базе пару десятков раз? Что делает на главной xmlsitemap,если ей место на /sitemap.xml? Откуда множественные выборки словарей и тегов?
Модули ведь не идиоты пишут, значит проблема во взаимодействии ядра с окружением.
Не используйте Виевс. Напишите свое решение: используя АПИ Друпала «ДЕШЕВЛЕ и ПРОЩЕ», а главное - РАЗУМНЕЙ - будет именно это.
Я вот просто уверен, что без пресловутой связки вьюс-сск друпал бы до сих пор был игрушкой ограниченного круга людей. То что вы предлагаете,это по существу писать свои модули, но в усечённом виде. Есть в этом смысл и экономическое обоснование? Как насчёт поддержки этого хозяйства в будущем?
- Для комментирования войдите или зарегистрируйтесь
Модули ведь не идиоты пишут, значит проблема во взаимодействии ядра с окружением.
Спорное утверждение
- Для комментирования войдите или зарегистрируйтесь
На самом деле views то меньше всего стоит ругать, тут не надо забывать про locale, i18n, pathauto и т.д. и т.п., в этом случае надо конечно применять кеширование, а вот с кешированием то и начинаются траблы... я до сих пор не увидел того решения, которое бы устроило всех...
После того, как поменял с node на поля, количество запросов для главной страницы уменьшилось где то в 9ть раз... но по прежнему остается чрезвычайно велико ~450 на страницу, т.к. такие модули как pathauto + i18n не дают расслабиться базе... Но это гибкость, тут уж ничего не поделаешь, только кеширование и спасает...
- Для комментирования войдите или зарегистрируйтесь
Я вот просто уверен, что без пресловутой связки вьюс-сск друпал бы до сих пор был игрушкой ограниченного круга людей. То что вы предлагаете,это по существу писать свои модули, но в усечённом виде. Есть в этом смысл и экономическое обоснование? Как насчёт поддержки этого хозяйства в будущем?
:) Что значит в «усеченном»? Вы выше говорили о «лишнем». Я начинаю путаться.
- Для комментирования войдите или зарегистрируйтесь
Проблема друпала в том, что в нем практически любое событие порождает волну перехвата хуков (массового вызова функций). Мало того, почти каждый хук обращается к базе.
Казалось бы, безобидная функция l() тоже обращается к базе, в надежде получить алиас. И если вы выводите список ссылок для 100 нод, то у вас будет 100 запросов.
Это особенности архитектуры друпала. Перед тем, как городить масс-cck и вьюсы, следует разобраться, как это работает под капотом.
- Для комментирования войдите или зарегистрируйтесь
Если построить систему кеширования в соответствии с архитектурой drupal, то производительность вырастит в разы, хотя больше будет расходоваться памяти под кеш.
Идея проста, надо, чтобы каждый модуль, пользующийся услугами хуков для node юзал свой кеш и дополнительно с этим следил за актуальностью глобального кеша ноды, т.о. образуется двухуровневая система кеширования. Глобальная - для ноды и локальная - для каждого хука. Если необходимо будет перестроить ноду, например при обновлении результата голосования, то надо будет очистить глобальный кеш ноды (с помощью того модуля, который инициирует перестройку) и локальный для модуля голосования (конечно только ту часть, которая хранит данные для данного нода), а потом перестроить ноду.
Вот тут то и будет фокус, перестраиваться будет лишь та часть, которой нет, т.е. голосование, а остальные будет извлечено из кеша и собрано как конструктор.
Конечно для каких то модулей не будет иметь смысла юзать свою локальную систему кеша, но в целом выигрыщ все равно д.б. значительным, по сравнению с текущей работой ядра, т.к. система строится на теории вероятности, что в 99% случаях нода не будет претерпевать изменений, поэтому ее не имеет смысла каждый раз пропускать через весь процесс генерации или большей его части.
Я видел похожий модуль, кажись advanced cache, он как раз патчит ядро, притом не только ноды, но я его пока что не пробовал, руки не доходили...
- Для комментирования войдите или зарегистрируйтесь
Для 6-ки в архитектуре уже мало что поменяешь. А вот 7-ку можно изучать. Кстати такого понятия как нода скоро не будет, - переходим к полям.
- Для комментирования войдите или зарегистрируйтесь
Для 6-ки в архитектуре уже мало что поменяешь. А вот 7-ку можно изучать. Кстати такого понятия как нода скоро не будет, - переходим к полям.
А можно поподробнее про поля? Я так понимаю, что концепция хуков останется, а уйдет node из views или будет все кардинально переработано?
- Для комментирования войдите или зарегистрируйтесь
Нода в 7-ке есть - оставлена скорее из-за совместимости, реализована она на полях. Почитайте соседние топики про 7 - найдёте интересное.
- Для комментирования войдите или зарегистрируйтесь
в среднем 200 запросов, больше всего drupal_lookup_path после фключения path (autopath не использую), потом locale
- Для комментирования войдите или зарегистрируйтесь
хм, вот интересно
у меня вывод тизеров (выводится штук 6 на странице)(у каждого тизера, свой блок)
правильно ли я понимаю, что если вывод сделать не тизерный, а полями (хм как правда не знаю) снизится количество запросов?
- Для комментирования войдите или зарегистрируйтесь
Правильно понимаешь
- Для комментирования войдите или зарегистрируйтесь
попробую, а то с производительностью плохо
p.s. Почему то у меня devel эту таблицу не показывает
Идет текст:
Queries taking longer than 5 ms and queries executed more than once, are highlighted. Page execution time was 8486.39 ms.
Потом заголовки таблицы ms # where и тд
Затем
Memory usage:
Memory used at: devel_init()=1.46 MB, devel_shutdown()=17.57 MB.
и на этом все. А собственно таблицы нет. Может где то включить нужно в devel
- Для комментирования войдите или зарегистрируйтесь
Там галочки посмотрите в настройках
- Для комментирования войдите или зарегистрируйтесь
Отключил nodeblock,минус 400 запросов. Я так понял он использует node_load, однако вопрос: откуда такая жопа, если у меня один вшивый блок от этого модуля на главной?
Похоже за такие модули нужно вырывать яйца (девелоперу и тому кто их юзает)
Кстати, подскажите: как давать редактировать блоки НЕадмину и через удобный интерфейс?
- Для комментирования войдите или зарегистрируйтесь
Ещё вымутить 300 запросов и я буду счастлив
- Для комментирования войдите или зарегистрируйтесь
потыкал, вышла таблица
Executed 518 queries in 2193.35 milliseconds.
Прожорливые по времени
drupal_lookup_path 16.88
SELECT COUNT(pid) FROM url_alias
_node_types_build 32.43
SELECT nt.type, nt.* FROM node_type nt ORDER BY nt.type ASC (это видимо выводятся заголовки нод типа новость
pager_query 52.26
SELECT COUNT(*) FROM node n WHERE n.promote = 1 AND n.status = 1
Это вывод в блоках тизеров нод, промотированных
pager_query 7.21
SELECT n.nid, n.sticky, n.created FROM node n WHERE n.promote = 1 AND n.status = 1 ORDER BY n.sticky DESC, n.created DESC LIMIT 0, 10
(это я вывожу тизер в верхнем блоке, что то вроде топовой публикации)
node_load 31.32
SELECT n.nid, n.type, n.language, n.uid, n.status, n.created, n.changed, n.comment, n.promote, n.moderate, n.sticky, n.tnid, n.translate, r.vid, r.uid AS revision_uid, r.title, r.body, r.teaser, r.log, r.timestamp AS revision_timestamp, r.format, u.name, u.picture, u.data FROM node n INNER JOIN users u ON u.uid = n.uid INNER JOIN node_revisions r ON r.vid = n.vid WHERE n.nid = 48041
это вывод топовой новости. Но чего такой длиннющий запрос???
block_block 16.34
SELECT body, format FROM boxes WHERE bid = 118
вывод блока номер 118?
statistics_get 28.55 (2 раза)
SELECT totalcount, daycount, timestamp FROM node_counter WHERE nid = 48013
вывод статистики для ноды, причем результаты статистики я даже не вижу
eval 80.24
SELECT node.title, node.type, node.nid FROM node WHERE node.type = 'article' AND node.status = 1 ORDER BY node.created DESC LIMIT 5
хм, вывод пяти последних нод типа article. У меня таких блоков штук 5 на главной
eval 28.62
ELECT node.title, node.type, node.nid FROM node WHERE node.type = 'forum' AND node.status = 1 ORDER BY node.created DESC LIMIT 5
а это интересно что за х. Откуда у меня темы форума на главной?
menu_tree_all_data 26.36
SELECT m.load_functions, m.to_arg_functions, m.access_callback, m.access_arguments, m.page_callback, m.page_arguments, m.title, m.title_callback, m.title_arguments, m.type, m.description, ml.* FROM menu_links ml LEFT JOIN menu_router m ON m.path = ml.router_path WHERE ml.menu_name = 'admin_menu' ORDER BY p1 ASC, p2 ASC, p3 ASC, p4 ASC, p5 ASC, p6 ASC, p7 ASC, p8 ASC, p9 ASC
Это обычно меню, и так долго обрабатывается?
execute 41.99
SELECT node.nid AS nid, node.title AS node_title, node.created AS node_created FROM node node INNER JOIN og_ancestry og_ancestry ON node.nid = og_ancestry.nid WHERE (node.status <> 0) AND (og_ancestry.group_nid = 15511) ORDER BY node_created DESC LIMIT 0, 5
вывод одного тизера ноды принадлежащей группе.
таких выводов у меня несколько
statistics_exit 173.07
INSERT INTO accesslog (title, path, url, hostname, uid, sid, timer, timestamp) values('', 'node', '', '213.221.5.200', 1, 'u6fcm9ef3qqfv35lgr4jrau9j7', 3365, 1268219025)
чего это так долго считается
ну там ноде лоад и drupal_lookup_path несколько раз
- Для комментирования войдите или зарегистрируйтесь
потыкал, вышла таблица
Реально нужно пересчитывать это всё при каждой загрузке? Запихай всё в кэш и обновляй, например, раз в 5 минут.
- Для комментирования войдите или зарегистрируйтесь
С помощью кеширования в блоки сократил нагрузку с 450 до 200 запросов, так что кеш должен помочь!
- Для комментирования войдите или зарегистрируйтесь
Реально нужно пересчитывать это всё при каждой загрузке? Запихай всё в кэш и обновляй, например, раз в 5 минут.
кэш блоков включен
другое дело что я блоки на главной подключаю прямо в page.tpl.php
(не уверен, что при этом кэш обрабатывается как надо)
Еще есть кэш во вьюс. Правда не понял как он обновляет информацию
- Для комментирования войдите или зарегистрируйтесь
другое дело что я блоки на главной подключаю прямо в page.tpl.php
Ну вместо module_invoke - cache_get :)
- Для комментирования войдите или зарегистрируйтесь
надо будет попробовать
подскажите где почитать подробнее
или тупо автозаменой module_invoke на cache_get
Еще одна безумная идея
Есть дефолтный вывод таксономии - вывод тизеров
и такой же вывод для нод относящихся к группе (OG)
что если вывод этих тизеров переделать во вьюсе (тем более такая возможность есть у вьса) в подгрузку нужных полей (например таблица)
Правда таблица конечно грузится будет долго (в ie)
Хотя почти никто не мешает сделать полями, а строить их CSS
что скажете ?
- Для комментирования войдите или зарегистрируйтесь
пробовал выводить тизеры с помощью полей
ну стало на 20 запросов меньше
что интересно, обнаружил что грузится node_load нод, которых и на главной уже нет (раньше были)
еще, глянул тему форума и ужаснулся
то что более 600 запросов можно списать - ведь камментов по 50 штук
но вот это что такое?
eval 353.17
SELECT DISTINCT n.title, n.nid, n.created FROM node n INNER JOIN term_node tn ON n.nid = tn.nid WHERE n.status = 1 AND tn.tid = 959 AND n.nid != 33617 ORDER BY n.created DESC LIMIT 5
и следующий
eval 383.38
SELECT DISTINCT n.title, n.nid, n.created FROM node n INNER JOIN term_node tn ON n.nid = tn.nid WHERE n.status = 1 AND tn.tid = 172 AND n.nid != 33617 ORDER BY n.created DESC LIMIT 5
что это за запросы? откуда они в теме форума с камментами?
- Для комментирования войдите или зарегистрируйтесь
так как у меня на главной блоки выводились вручную
провел инвентаризацию, убрав отображение блоков на главной из правого сайдбара (то есть вставив опцию показывать везде кроме )
и случилось чудо
было 530 запросов
стало
Executed 361 queries
- Для комментирования войдите или зарегистрируйтесь
Гм, полезные изыскания. То есть необходимо максимально сфокусировать блок в настройках,right? Надо будет поэксперементировать.
- Для комментирования войдите или зарегистрируйтесь
Ну а что? Вполне логично, если блок не надо показывать, то он и не выполняется
- Для комментирования войдите или зарегистрируйтесь
RxB: не, я в том смысле, нужно ли строго ограничивать показ блока, приведёт ли это к экономии ресурсов?
Например, разница "Показывать везде" и показывать на странице 1,2. Предположим, у меня регионы размечены на странице 1 и 2,а я просто забил прописывать эти страницы (т.е стоит "Показывать везде"),так как всё равно регионы только на нужных страницах.
- Для комментирования войдите или зарегистрируйтесь
Регион это переменная
Блок это содержимое этой переменной.
Если на странице нет вывода региона, то это не значит, что эта переменная не создаётся.
Если переменная создаётся, то содержимое естественно туда тоже попадает.
Раз попадает содержимое, то дёргается весь процесс, начиная от формирования блока и заканчивая его темизацией
- Для комментирования войдите или зарегистрируйтесь
вот ведь
я то думал, нет региона - нет проблем
надо будет пошерстить и отображение блоков в сайдбаре для тем форума (у которых у меня сайдбар не выводится вообще)
- Для комментирования войдите или зарегистрируйтесь
с другой стороны
если у Вас кэширование, то так ли важно количество запросов
Анонимом ведь будет показываться кэшированная версия
а тормозить будет у зарегенных только
(и у несчастного админа) :)
- Для комментирования войдите или зарегистрируйтесь
Ну вместо module_invoke - cache_get :)
Да, так тема cache_get не раскрыта. Я понял дословно и попробовал такое:
<?php$block = cache_get('menu', 'block', 'view', 'menu-main-product-menu');
print $block['content'];?>Не работает. Классика работает:
<?php$block = module_invoke('menu', 'block', 'view', 'menu-main-product-menu');
print $block['content'];?>- Для комментирования войдите или зарегистрируйтесь
Чтобы что-то взять из кэша, нужно туда что-то положить. Моя фраза дословно некорректна. Правильнее так:
Сначала делаем module_invoke и cache_set, затем - только cache_get. Кэш сбрасываем по мере необходимости.
- Для комментирования войдите или зарегистрируйтесь
Проблема друпала в том, что в нем практически любое событие порождает волну перехвата хуков (массового вызова функций). Мало того, почти каждый хук обращается к базе.
Казалось бы, безобидная функция l() тоже обращается к базе, в надежде получить алиас. И если вы выводите список ссылок для 100 нод, то у вас будет 100 запросов.
Это особенности архитектуры друпала. Перед тем, как городить масс-cck и вьюсы, следует разобраться, как это работает под капотом.
А если масс-сск и без вьюсов, секуэлем?
- Для комментирования войдите или зарегистрируйтесь











Комментарии