Witam JacekK,
Saturday, June 11, 2005, 9:02:44 AM, you wrote:
> Witam Tomasz,
> Saturday, June 11, 2005, 12:10:36 AM, you wrote:
>> On Sat, 11 Jun 2005 00:01:04 +0200, JacekK wrote
>>> Jesli jeden ze z modolow daemona jest przetwarzany ponad 60sec ( co
>>> tyle chyba lmsd sprawdza czy nie ma przeladowania ) to lmsd zaczyna
>>> odpalac nastepne modoly !! I zaczyna sie jazda !!! Prosze sobie wyobrazic:
>>> odpala sie modol firewalla ( generowanie skryptu i uruchomienie trwa
>>> ponad 60sec ) i po 1 min odpala sie kolejny modol np TC (
>>> generowanie kolejek htb dla klientow ). W pewnym momencie obydwa
>>> skrypty przetwarzaja sie rownolegle !!!! ( TOTALNA SIECZAK NA SERWIE,
>>> tylko reboot moze pomoc ) LMSD dziala dobrze pod warunkiem ze modol
>>> ktory przetwarza, skonczy swoja prace przes 60sec !!, bo jak nie to
>>> uruchomi to samo w kolejnym procesie !!!!!
>> LMSD powinien tworzyć jakieś pliki blokad na dysku i przy każdym uruchomieniu
>> testować czy nie istnieją lub powinien sprawdzać czy nie ma procesu już
>> działającego o nazwie lmsd. Ja u siebie tak robię używają serii skryptów
>> perlowych żeby nie doszło do zagnieżdżonego uruchamiania tych skryptów...
> Problem juz rozwiazalem, wystarczy troszke kod lmsd.c zmodyfikowac.
> lmsd uzywa tylko 2-och stanow 0="brak przeladowania", 1="żadanie
> przeladowania".
> Wprowadzilem 3-stan 2="przeladowanie w toku", i juz lmsd, nie wywoluje
> ponownie tego samego żadania przeladowania po 60sec.
> Oto zmiany w kodzie lmsd.c
> Linia 170:
//res = db_query(g->>conn, "SELECT reload from
//res = db_query(g->>daemonhosts WHERE name = '?' AND reload
//res = db_query(g->>!=0",dbhost);
> zmiana na:
res = db_query(g->>conn, "SELECT reload from
res = db_query(g->>daemonhosts WHERE name = '?' AND reload =1",dbhost);
> I dopisanie zmiany statusu w bazie, jesli rozpoczelo sie
> przeladowanie:
> Linia 340 ( przed uruchomieniem modolow ), zmiana statusu reloadu na 2
db_pexec(g->>conn, "UPDATE daemonhosts SET reload = 2
db_pexec(g->>WHERE name = '?'", dhost);
> Przy okazji, mozna by ten stan "2" (reload=2)
> wykorzystac w skryptach LMS-a, by informowac poprzez UI ktore
> instancje w danej chwili sie przeladowywuja .
Maly diff do tego co podalem:
Linia 340 ( przed uruchomieniem modolow ), zmiana statusu reloadu na 2
if( reload )
{
db_pexec(g->>conn, "UPDATE daemonhosts SET reload = 2 WHERE name = '?'", dhost);
}
--
Pozdrawiam
JacekK mailto:jacekk@optiserw.com.pl