Változások a HUP "tracker" szolgáltatásában

Címkék

Egy ideje az volt tapasztalható, hogy csúcsidőszakokban HUP kisebb-nagyobb teljesítmény problémákkal küzd. A MySQL -slow.log egyértelműen mutatta az okot, mégpedig azt, hogy az oldal által használt Drupal "tracker" modulja az (egyik) bűnös. A probléma régi, de egészen az elmúlt hónapokig nem volt annyira égető, hogy ezért megbolygassam a rendszert. Most azonban az oldal elérte azt a stádiumot (hja, lassan 10 évnyi cikk és komment), amikor komolyabb lépésre volt szükség.

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.

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 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

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 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."

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 "Saját friss tartalmaim"-on látszik a sebességnövekedés egyértelműen. Ügyi húzás volt, Trey. ;)

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."

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."