A probléma megoldásának keresése közben akadtam rá egy bejegyzésre, amely arról szól, hogy a Drupal.org, miután folyamatosan teljesítmény problémái (és ebből fakadó leállásai) voltak a "tracker" modullal, egy tracker2 névre hallgató modulra váltott, amely az eredeti, Core-ban megtalálható modul újraimplementálása. A modult David Strauss Drupal fejlesztő készítette. A kódról jó véleményeket olvastam.
A két kód közti különbséget jól érzékelteti az alábbi:
tracker.module
SELECT DISTINCT(n.nid), n.title, n.type, n.changed, n.uid, u.name,
GREATEST(n.changed, l.last_comment_timestamp) AS last_updated, l.comment_count FROM
{node} n INNER JOIN {node_comment_statistics} l ON n.nid = l.nid INNER JOIN {users} u
ON n.uid = u.uid LEFT JOIN {comments} c ON n.nid = c.nid AND (c.status = %d OR
c.status IS NULL) WHERE n.status = 1 AND (n.uid = %d OR c.uid = %d) ORDER BY
last_updated DESC';
tracker2.module
SELECT t2n.nid, t2n.changed FROM {tracker2_node} t2n WHERE t2n.published = 1 ORDER BY
t2n.changed DESC
A jó vélemények mellett meggyőzött az is, hogy a teszt rendszeren sokkal jobb teljesítményt mutatott, mint az eredeti tracker modul.
Noha az alapelvem az, hogy ha csak nem erősen indokolt, nem használok Drupal Core-on kívüli modult, ebben az esetben muszáj volt. A választási lehetőségek közül - hogy kikapcsolom a tracker-t, vagy alkalmazom a tracker2-t - az utóbbit választottam. Tovább erősítette ezt a választást, hogy a tracker2 valószínűleg része lesz a Drupal Core-nak.
A tracker2 alkalmazásának egyetlen átmeneti szépséghibája, hogy még napokba telik, amíg az egész oldal tartalmát leindexeli, ezért csak az újabb tartalmak érhetők el a "friss tartalom" link alatt. Cserébe a "friss tartalom" nem 2-6-10 másodperc alatt töltődik, hanem szinte azonnal. Ezzel együtt a MySQL szerver is sokkal jobban érzi magát. Azt csak remélni tudom, hogy a teljes indexelés után is megmarad a jó teljesítmény. Kiderülni pár nap múlva fog.
- A hozzászóláshoz be kell jelentkezni
- 3612 megtekintés
Hozzászólások
A két kód közti különbséget aligha szemléltetheti két tök mást visszaadó lekérdezés. Mondjuk az egyik citrom a másik meg banán.
- A hozzászóláshoz be kell jelentkezni
A belsejébe ennyire nem mélyedtem bele, de a fent linkelt oldalon írják azt, hogy:
"To have an overview of the amount of change (simplification), compare the sql query of the original tracker and the one from tracker2:"
és az idézett SQL query-k. Le fogom magam is ellenőrizni.
--
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
Mindamellett az egyszerűség jó, minek is túlbonyolítani, ha cache-elni is lehet. Végeredményben a júzeroldali használatkor valóban a fenti két query fut le, csak a másodikat megelőzi az indexelési procedúra egy segédtáblába, ha jól sejtem. Ha nem, akkor már megint csak akadékoskodtam. :)
- A hozzászóláshoz be kell jelentkezni
szerintem de. a regi valtozat lathatoan az osszes oldal tartalmat tolti be, mig david strauss kodja csak az node id-ket egy erre rendeltetett megfeleloen indexelt tablabol.
- A hozzászóláshoz be kell jelentkezni
Nem mondod.
- A hozzászóláshoz be kell jelentkezni
Valoban, szigoruan veve tok mas adatokat ad vissza. Azonban ebben az esetben az alkalmazas szempontja a lenyeg. Mondjuk ugy, hogy vegeredmenyben hasonlo hatasu lekerdezesek.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
A tracker jó dolog, működjön, csak ennyit kérek. :)
-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."
- A hozzászóláshoz be kell jelentkezni
Ami kimaradt: óránként 1 000 node indexelődik, 60 000 node van hátra, azaz kb. 2.5 nap alatt lesz meg az egész. Addig nem lesz megtalálható az összes "friss tartalom" és a "követés" cucc. Folyamatosan kerülnek vissza. Az indexelés idejére nyilván egy kicsit lassabb is lesz az oldal.
--
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
Pedig már így is érezhetően gyorsabb. Klassz!
--
Debian - The "What?!" starts not!
http://nyizsa.uni.cc
- A hozzászóláshoz be kell jelentkezni
Úgy fest, hogy megy 2 000 node / óra is. Így hamarabb fog végezni.
Már csak 40 ezer van hátra.
--
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
Még 25 ezer.
--
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
Az indexelés befejeződött, a friss tartalom linken a jó teljesítmény megmaradt. Sikeresnek mondhatjuk a projektet. \o/
--
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
A "Saját friss tartalmaim"-on látszik a sebességnövekedés egyértelműen. Ügyi húzás volt, Trey. ;)
- A hozzászóláshoz be kell jelentkezni
+1, én is köszönöm. :)
-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."
- A hozzászóláshoz be kell jelentkezni
Tényleg gyorsabb, király. :)
Arra nem gondoltál még, hogy egy új, külön gépre átpakolni csak az SQL-t?
--
Discover It - Have a lot of fun!
- A hozzászóláshoz be kell jelentkezni
Gondoltam rá, de szerintem ha a slow query-ket ki tudom irtani, akkor nem lesz rá szükség. A tracker modul lecserélésével ebbe az irányba egy nagy lépés történt.
--
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
Pedig ez csak ideiglenes. Előbb-utóbb bele fogsz kényszerülni, hogy újabb gépet vegyél erre célra.
- A hozzászóláshoz be kell jelentkezni
Egy valami picit zavar: ha hozzászólnak egy tartalomhoz, és a tracker -ben nézem, akkor frissültnek jelzi, holott ezt csak akkor kellene, ha maga a cikk változott.
-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."
- A hozzászóláshoz be kell jelentkezni
Ez mindig így volt.
- A hozzászóláshoz be kell jelentkezni
Nem, tévedsz, nézd meg pl. a Drupal hu tracker -ét (eredeti tracker). Mivel elég sokat használom a Drupalt (meg a hup trackert) nem tűnt volna fel, ha mindig is így lett volna.
Viszont az tény, hogy nagyságrendekkel gyorsabb lett a tracker elérése.
-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."
- A hozzászóláshoz be kell jelentkezni