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
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
FROM
node node
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')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')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')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
FROM
taxonomy_index tn
LEFT OUTER
JOIN taxonomy_term_hierarchy th ON th
.tid
= tn
.tid
LEFT OUTER
JOIN taxonomy_term_hierarchy th1 ON th
.parent
= th1
.tid
WHERE ( (tn.tid = '12322') OR (th1.tid = '12322') ))) ))AND ( EXISTS (SELECT na.nid AS nid
FROM
node_access na
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) ))
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
LIMIT 10 OFFSET 0;
... és a másik
# Query_time: 16.304187 Lock_time: 0.000098 Rows_sent: 1 Rows_examined: 0
SELECT
COUNT(*) AS expression
FROM
(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
FROM
node node
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')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')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')INNER
JOIN node_access na ON na
.nid
= node
.nid
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
FROM
taxonomy_index tn
LEFT OUTER
JOIN taxonomy_term_hierarchy th ON th
.tid
= tn
.tid
LEFT OUTER
JOIN taxonomy_term_hierarchy th1 ON th
.parent
= th1
.tid
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;