Slow query - taxonomy

gazsesz képe

Ebben a fórumtémában már valamennyire körbe lett járva a dolog, de az még d6-ra vonatkozott, nekem meg a d7-tel gyűlt meg a bajom.

Adott egy dedikált szerver: 8 magos, 3,2 GHz-es processzor, 16 GB memória, 1 TB háttér, apache, mysql.

Ez szolgálja ki a következőket:
- kb 50 egyedi drupal oldal
- 4 db domain access-es oldal (multisite), amik 20-50 oldalt szolgálnak ki egyenként, amiből az egyik viszonylag nagy látogatással bír, napi 3500-6000 látogatás. A többi oldal néhány 10-től néhány 100 látogatás/nap.

A problémák:
Az egyik gond a nagy látogatószámú multisite-tal van, ott is a taxonomy query-kel, mert azok irtózatosan lassúak, és ahogy egyre több fut belőlük, egyre lassabbak lesznek, míg végül néha teljesen behal a szerver.

Amit használok: Boost modul, Entity cache, Taxonomy Entity index és ahol lehet a views content cache-t. A Views Content cache jó is lett volna, ha nem keverte volna össze az egyes aldomainek tartalmát, de mivel összekeverte, ki kellett kapcsolni. (Ugyanez volt az eredmény a views time based cache per domain-nel is sajnos.)

(Sőt a boost modul sem mindig dolgozik rendesen a multisite-os környezetben, de ezt külön fórumtémában megírom.)

Aztán kipróbáltam a Shadow modult, de sehogyan sem tudtam életre kelteni multisite-os környezetben, pedig az elvileg tudna segíteni a slow query problémán.

Kérdeztem a rendszergazdát, hogy a Memcached, APC segíthet-e, ő azt mondta, hogy szerinte nem, mert az nem SQL oldali, hanem php oldali, így a slow query-n nem fog segíteni.

Jelenleg itt állok és tanácsot kérek tőletek, hogy melyik irányba induljak el!

A kétféle lassú query (az egyik a tartalmakat állítja össze, a másik pedig a lapozót):
Query_time: 10.743357 Lock_time: 0.000138 Rows_sent: 3 Rows_examined: 241247

  1. SELECT field_data_field_cat_prio.field_cat_prio_value AS field_data_field_cat_prio_field_cat_prio_value, field_data_field_region_priotity.field_region_priotity_value AS field_data_field_region_priotity_field_region_priotity_value, field_data_field_priority.field_priority_value AS field_data_field_priority_field_priority_value, node.nid AS nid
  2. FROM
  3. node node
  4. LEFT JOIN field_data_field_cat_prio field_data_field_cat_prio ON node.nid = field_data_field_cat_prio.entity_id AND (field_data_field_cat_prio.entity_type = 'node' AND field_data_field_cat_prio.deleted = '0')
  5. LEFT JOIN field_data_field_region_priotity field_data_field_region_priotity ON node.nid = field_data_field_region_priotity.entity_id AND (field_data_field_region_priotity.entity_type = 'node' AND field_data_field_region_priotity.deleted = '0')
  6. LEFT JOIN field_data_field_priority field_data_field_priority ON node.nid = field_data_field_priority.entity_id AND (field_data_field_priority.entity_type = 'node' AND field_data_field_priority.deleted = '0')
  7. WHERE (( (node.status = 1 OR (node.uid = 0 AND 0 <> 0 AND 0 = 1) OR 0 = 1) AND (node.nid IN (SELECT tn.nid AS nid
  8. FROM
  9. taxonomy_index tn
  10. LEFT OUTER JOIN taxonomy_term_hierarchy th ON th.tid = tn.tid
  11. LEFT OUTER JOIN taxonomy_term_hierarchy th1 ON th.parent = th1.tid
  12. WHERE ( (tn.tid = '12322') OR (th1.tid = '12322') ))) ))AND ( EXISTS (SELECT na.nid AS nid
  13. FROM
  14. node_access na
  15. WHERE (( (na.gid = '0') AND (na.realm = 'all') )OR( (na.gid = '0') AND (na.realm = 'domain_site') )OR( (na.gid = '0') AND (na.realm = 'domain_id') ))AND (na.grant_view >= '1') AND (node.nid = na.nid) ))
  16. ORDER BY field_data_field_cat_prio_field_cat_prio_value ASC, field_data_field_region_priotity_field_region_priotity_value ASC, field_data_field_priority_field_priority_value ASC
  17. LIMIT 10 OFFSET 0;

... és a másik
# Query_time: 16.304187 Lock_time: 0.000098 Rows_sent: 1 Rows_examined: 0

  1. SELECT COUNT(*) AS expression
  2. FROM
  3. (SELECT DISTINCT field_data_field_cat_prio.field_cat_prio_value AS field_data_field_cat_prio_field_cat_prio_value, field_data_field_region_priotity.field_region_priotity_value AS field_data_field_region_priotity_field_region_priotity_value, field_data_field_priority.field_priority_value AS field_data_field_priority_field_priority_value, node.nid AS nid, 1 AS expression
  4. FROM
  5. node node
  6. LEFT JOIN field_data_field_cat_prio field_data_field_cat_prio ON node.nid = field_data_field_cat_prio.entity_id AND (field_data_field_cat_prio.entity_type = 'node' AND field_data_field_cat_prio.deleted = '0')
  7. LEFT JOIN field_data_field_region_priotity field_data_field_region_priotity ON node.nid = field_data_field_region_priotity.entity_id AND (field_data_field_region_priotity.entity_type = 'node' AND field_data_field_region_priotity.deleted = '0')
  8. LEFT JOIN field_data_field_priority field_data_field_priority ON node.nid = field_data_field_priority.entity_id AND (field_data_field_priority.entity_type = 'node' AND field_data_field_priority.deleted = '0')
  9. INNER JOIN node_access na ON na.nid = node.nid
  10. WHERE (( (node.status = 1 OR (node.uid = 0 AND 0 <> 0 AND 0 = 1) OR 0 = 1) AND (node.nid IN (SELECT tn.nid AS nid
  11. FROM
  12. taxonomy_index tn
  13. LEFT OUTER JOIN taxonomy_term_hierarchy th ON th.tid = tn.tid
  14. LEFT OUTER JOIN taxonomy_term_hierarchy th1 ON th.parent = th1.tid
  15. WHERE ( (tn.tid = '8070') OR (th1.tid = '8070') ))) ))AND(( (na.gid = '0') AND (na.realm = 'all') )OR( (na.gid = '0') AND (na.realm = 'domain_site') )OR( (na.gid = '67') AND (na.realm = 'domain_id') ))AND (na.grant_view >= '1') ) subquery;
Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
gazsesz képe

Régebben indított téma, de van némi update-em ezzel kapcsolatban:

  • érdemes használni az Authcache mdult
  • a taxonomy entity index továbbra is javasolt
  • a taxonomy view-nál használjuk a lite pager-t - https://drupal.org/project/views_litepager
  • összetett sorrendezést kerüljük, ha mégis szükség van rá, akkor vonjuk össze minél kevesebb mezőbe rules-sal
  • a boost modul jó lenne, de drupal commerce-nél nem használható, mert a kosárblokkot is becacheli és emiatt kavarodás van. Próbáltam javascripttel kezelni, de nem sikerült eddig.

Egyelőre ennyi.

0
0

Gazsesz