Elszabadult a sessions tábla?

Gabor képe

Hogyan működik és mi szab gátat a session tábla hízásának? Kicsit aggódom. Rövid idő alatt 30 ezer rekord került bele és napról napra tovább hízik.

Gabor képe

jelzem, már 31 ezer recordnál tart a tábla

0
0
crt képe

Szia.

Ha jól láttam a settings.php-ban (illetve a szerveren globálisan) meghatározott session.gc_maxlifetime értéke határozza meg az időt, amíg az adatbázisban tárolódnak az értékek.
A cron rendben lefut időközönként?

Üdv: Zoli

0
0
Gabor képe

Én is az általad említett értékek letekerésétől vártam a megoldást. Default értékük 200 ezer és én ezt visszavettem 7200-ra.

0
0
crt képe

Beszúrtam a következő sort a session.inc fájl sess_gc függvényébe:

$fp = fopen("/tmp/proba.log", 'w');fwrite($fp, "Proba");fclose($fp);

Indítottam cron-t, ki- és bejelentkeztem, de eddig még egyszer sem futott le a függvény. Lehet, hogy errefelé van a probléma...
Tudja valaki ez mitől lehet?

Üdv: Zoli

0
0
Gabor képe

Hát nem tudom ... de nagyon aggaszt, mert már 32 ezer rekordnál járok és nem látom mitől lenne egyszer csak vége. Van másik három drupál site-om és azok szépen ketyegnek nem látok ilyen furcsaságot.

0
0
crt képe

_Szerintem_ ideiglenesen futtasd le manuálisan azt az sql lekérdezést, amit a drupal is futtatna a sess_gc függvényben.

De előtte azért csinálj egy backup-ot... mert lehet, hogy butaságot mondok.

Üdv: Zoli

0
0
Gabor képe

A default 200 ezres session érték azt jelentené, hogy 138 napig tárolja a sessonöket? A google telenyomja a session táblát és ez 138 napig meg sem áll? Biztos így kell ennek működnie?

0
0
crt képe

Az másodpercben van megadva, ami kb. 2.5 napot jelent.

Üdv: Zoli

0
0
Gabor képe

mert 7200-ra vissza véve session limiteket, lifetime-okat... már meg kelett volna állnia (most 34 ezer rekordnál tart)

0
0
Gabor képe

Beállítottam a session értékeket 1 napra ás felírtam a legöregebb sessin értéket. Pár napig nézegetem, de az az érzésem a debug azt fogja mondani nem törlődik belőle semmi, csak hozzá adódik ....

0
0
Gabor képe

vagy csak a magyar fórumokon szokásos letorkolom/hozzá se szólok megy? Ne ábrándítsatok má' ki a drupálból és a magyar drupál közösségből.

Hetek óta szívok és .....

Legalább annyit bökjetek ki mekkora egy átlagos és jól működő sessions tábla napi 100 letöltés, 200 látogató mellett? Azt gondolnám beáll egy nagyjáboli fix méretre és a rendszer pucolja a régi, lejártakat.

0
0
Hojtsy Gábor képe

Átlagos webhely adataival nem tudok szolgálni :) De megnéztem neked, a drupal.hu session táblája 1600 rekordos, a weblabor.hu session táblájában 333ezer(!) rekord van. Minkét esetben ezen rekordok kétharmada tegnapi vagy tegnapelőtti, egyharmada mai keltezésű (egyébként ez nagyon szépen illeszkedik a fent emlegetett két és fél napos alapbeállításhoz, ha grafikonon ábrázolnánk, jól látszana, hogy tegnap előttről már nincs annyi bejegyzés, és még ma sincs vége a napnak). Nem véletlen, hogy a Drupal 5-ösben törekednek az anoním sessionök elkerülésére, a drupal.hu session-ök közül közel száz azonosított felhasználó, a weblaboron kétszer annyi, a többi anoním session. (A weblabor régebbi Drupal verziót futtat, a Drupal.hu a legújabbat, látszik is).

0
0
Gabor képe

Köszönöm, hogy végre ránéztetek a fórumra!

A default 200 ezres session értéknél nem állt meg 34 ezer rekornál sem. Tegnap de. ürítettem a táblát, visszavettem egy napra az értéket. Most kb. 8000 rekord van benne és vannak benne másfél naposak is! Megnéztem az első tegnap délelőtti rekordot és még mindig benne van most is.

A 8000 rekordból csak 16 db nem anonim!!! A rendszer Drupal 5.1 (www.spicy.hu)

Hol lehet tovább keresni a hibát? Kérem segítsetek!

0
0
Hojtsy Gábor képe

Köszönöm, hogy végre ránéztetek a fórumra!

Az egész témát három napja indítottad, és már a tizenötödik hozzászólásnál tartunk... Azért én nem lennék a helyedben ennyire elégedetlen...

A default 200 ezres session értéknél nem állt meg 34 ezer rekornál sem.

És ez meglep? Fent már leírták, hogy ez időt határoz meg, ha neked hirtelen ennyi látogatód volt (mindegy, hogy spammerek vagy googlebot), akkor ne lepődj meg, hogy felugrott.

Hol lehet tovább keresni a hibát?

Először is a türelmetlenségben. A régebbi session azonosítók törlése nem automatikus az adott időpontban. Alapbeállításban egy százalék esélye van mindig annak, hogy a régi session-öket eltakarító kód egyáltalán el fog indulni, elvileg ez sokáig is elhúzhatja a munkamenetek életét. http://hu.php.net/session:

session.gc_divisor coupled with session.gc_probability defines the probability that the gc (garbage collection) process is started on every session initialization. The probability is calculated by using gc_probability/gc_divisor, e.g. 1/100 means there is a 1% chance that the GC process starts on each request. session.gc_divisor defaults to 100.

Én a helyedben még figyelném egy ideig a dolgokat, és nem türelmetlenkednék.

Egyébként a bemásolt settings.php tartalma semmi garanciát nem ad arra, hogy a PHP tényleg ezekkel a beállításokkal dolgozik. Ha a szerveren nem módosítható értékeknek vannak ezek beállítva, akkor hiába próbálod ini_set()-ből felülírni. Egy phpnfo() hívás az ini_set()-ek után meg tudja mutatni, hogy tényleg milyen beállításokat használ a PHP.

0
0
Gabor képe

1, Elégedettségemet (már amennyire ez fontos) nem a hozzászólások száma, hanem azok minősége és használhatósága adja.

2, Nem olvasod el figyelmesen a hozzászólásokat, ha olyan analfabétának tartasz, hogy azt hiszem a 200 ezres értékből következik és arányítható a tábla rekordjainak száma é snem tudom, hogy időt határoz meg. Megnéztem a vonatkozó ini_set paraméterek pontos leírást (igaz egy mértékegységgel elnéztem a min. és a sec. vonatkozásában)

Én mielőtt ilyen fórumon tanácsot kérnék százszor utánanézek inkább előbb magamtól mindenhol, megpróbálom magam megoldani a dolgokat és ha végképpen nem megy akkor írok, mert félő hogy tanács helyett ilyen sértődött dorgálásban, égetésben lesz részem.

3, "Hol lehet tovább keresni a hibát?" -> Először is a türelmetlenségben. Na kössz ez aztán remek válasz. no comment.

4, "Én a helyedben még figyelném egy ideig a dolgokat, és nem türelmetlenkednék." Én se türelmetlenkednék, ha nem homlok egyenest máshogy viselkedne ez a sit emint a többi azonos kódot használó drupál oldalam. Nagyjából azonos a googlebot és spamrobot terhelése valamint a látogató száma. Ezért voltam kiváncsi, más oldalak statisztikájára ebből a szempontból, mert én csak az én pár drupál oldalamt tudom megnézni.

5, Kössz. Tudom, hogy nem biztos, hogy érvénre jutnak az ini_set beállításaim. Ezt is előbb ellenőriztem, csak a settings.php-ből egyszerűbb volt bemásolni.

és végül,

én tényleg meg akartam köszönni és hálát éreztem, hogy végre ránéztetek és a szavaimat tényleg köszönetnek szántam eredeileg!

Sajnálom, hogy egyből lámának nézve rutinból így reagáltál. Remélem normális mederbe kerül a téme és egymás égetése helyett problémamegoldásra kerül a hangsúly ;)

0
0
Hojtsy Gábor képe

Már bocsánat, de amíg olyan értelmetlen összefüggéseket emlegetsz, hogy "A default 200 ezres session értéknél nem állt meg 34 ezer rekornál sem" addig nehéz arra asszociálni, hogy tudod, miről beszélsz. Abból lehet megítélni a hátteredet, amit ide írsz, például hogy a settings.php-t másolod be, abból nem derül ki, hogy tudod, hogy nem biztos, hogy az tényleg úgy van-e a futó PHP-dben, vagy ha tudod, ellenőrizted-e. Ilyen dolgokkal meg tudnánk egymásnak spórolni egy csomó időt!

No, mindenesetre tehetsz ilyet a Drupal sess_gc() implementációjába:

watchdog('sess_gc', 'Session garbage collection executed.');

Ezután az eseménynaplóban nézegetheted, hogy lefut-e a szemétgyűjtés, a sess_gc típusú üzenetekre szűrve az eseményeket. Ha gyakran lefut, akkor persze ettől a watchdog táblád fog egy kicsit duzzadni, de úgyis ott ülsz mellette és egyfolytában figyeled, úgy látom.

0
0
Gabor képe

Beraktam a kódot.

Jól látod ott ülök a logok előtt ez a dolgom :D Sok (kb 10) éve üzemeltetek oldalakat (igaz pechetekre most már drupalt is), és megtanultam, hogy ha valami eltérően viselkedik a megszokottól, akkor azzal nem lehet viccelni, mert nagyon meg lehet szívni. Úgy tanítottak, hogy egy rendszergazda legyen inkább paranoiás, mint utólag sopánkodó ...

0
0
Gabor képe

Megosztom a tanulságokat:

Beraktam az ominózus site-ra és egy jól működő kontroll site-ra debug kódot és az bizonyította, hogy tényleg nem fut le a session garbage az ominózuson, míg a másikon lefut időnként.

Tovább kerestem az angol drupal site fórumon és találtam haonló problémával küzködő kollégákat: http://drupal.org/node/58069 mely ezzel zárult: "PHP does this automatically based on your sessions_gc time. Not drupal's responsibility. read up on session garbage collection in php."

Tehát még egyszer nekilátam a php manual még tüzetesebb bogarászásának: http://www.phpfreaks.com/phpmanual/page/ref.session.html

Egybevetettem a phpinfo() által adott értékeket a manualban leírtakkal.

És hoppá! a session.gc_probability értéke a szerveren 0! Tehát a valószínűsége hogy a karbantartás elinduljon 0/100 :D

Ezután újabb ini_set sorokkal egészítettem ki a settings.php-t és gondolom nem csodálkoztok, ha most már elégedett vagyok a rekordok számával. a biztonság kedvéért a session.gc_divisor-t belevettem a default értékkel, hátha holnap ezzel viccel meg a szolgáltatóm :)

most így néz ki a kiegészítés:

ini_set('session.gc_probability',1);
ini_set('session.gc_divisor',100);

Tehát Hojtsy Gábor köszönöm, hogy segítettél a debug kóddal és helyes irányba tereltél ;) és fentartom, hogy nem kellett türelmesnek maradnom, paranoia rulez!

0
0
Gabor képe

ini_set('arg_separator.output', '&');
ini_set('magic_quotes_runtime', 0);
ini_set('magic_quotes_sybase', 0);
ini_set('session.cache_expire', 86400);
ini_set('session.cache_limiter', 'none');
ini_set('session.cookie_lifetime', 86400);
ini_set('session.gc_maxlifetime', 86400);
ini_set('session.save_handler', 'user');
ini_set('session.use_only_cookies', 1);
ini_set('session.use_trans_sid', 0);
ini_set('url_rewriter.tags', '');
ini_set('memory_limit', '64M');

0
0
Hojtsy Gábor képe

Szerencsés mellékhatása ennek a témának (örülök, hogy ezen keresztül kiderült), hogy a Weblaboron egy kis kód módosítással megoldottuk, hogy az ott teljesen felesleges anoním session tárolás ne történjen meg. Így a háromszázezerről pár százra csökkent a session bejegyzések száma, és a Weblabor is jobban muzsikál.

0
0
Ash képe

Véletlenül találtam meg ezt a topikot, és pont nekem is az volt a problémám, három hét alatt 100.000 sor gyült fel a session táblában. Már kézzel ürítgettem, mert a tárhelyszolgáltatónál kiléptem a 30 MB -os keretből. Nem gondoltam volna, hogy a szolgáltató a ludas (web-szerver.hu) na nem akarom én leszolni, csak tudom, hogy itt is sokan használják, és nem sejtik hogy a session.gc_probability 0 ra van állítva.

Na a lényeg, hogy szerintem be kerülhetne ez az 1 sor a Drupal csomagba mert biztos vagyok benne hogy sok ember nem is sejti, hogy nincs karbantartva a session táblája.
H. Gábor nem tudom neked erről mi a véleményed, esetleg megemlíthetnéd az illetékeseknek. :) Biztos sokakon segítene.

Érdekességképpen még megnéztem néhány szolgáltatót:

extra.hu Rendben
hostgator.com Rendben
000webhost.com Rendben

0
0