> interogez pe toate odata... lucru care se pare ca nu este totusi ok...
> 
> Daca aveti alte idei sunt deschis...

Am facut pentru un client un soft asemanator, in C (e destul de complex, 
fiecare IP poate fi monitorizat prin mai multe metode, care sunt 
pluginuri etc).

Solutia adoptata de mine, care cu putin tweak a mers foarte bine:

1. citesti lista din baza de date
2. creezi threaduri pt. fiecare ping (NU am apelat ping extern, am facut 
propriile functii de ping bazate pe libnet si socket raw listen in 
epoll mode), dar care sa nu depaseasca 1000 threaduri simultan (ar 
putea depasii, dar este problema cu spatiul de adresare a memoriei 
alocat catre proces. Si 1000 e EXTREM de mult, daca lasi parametrii 
thread-ului asa cum ii pune sistemul de operare).
3. fiecare thread trimite ping-ul si se inchide
4. in loop-ul principal (care creaza threadurile) astept cu epoll dupa 
packete, calculez timpii, creez o lista de reply in memorie. Astept 
dupa un sequence maxim timpul de timeout.

Toata chestia ia ca timp f. putin, pt. 2500 hosturi. Eu am proiectat 
aplicatia sa faca toata chestia asta in maxim 3 minute la 60.000 
hosturi.

Rezultatele le scriam apoi in baza de date, la fiecare 5 minute.

Deci, pe baza de date aveam un query si apoi write-uri pt. fiecare host, 
daca era cazul, la fiecare 5 minute. Si asta pe o singura conexiune :)

Jucarila lucreaza like a charm. Nu stiu daca e pusa inca in productie, 
nu am mai tinut legatura cu acel client, din diverse motive.

-- 
  Claudiu Nicolaie CISMARU
  GNU GPG Key: http://claudiu.targujiu.net/key.gpg
  T: 0755135455
  E: [EMAIL PROTECTED], [EMAIL PROTECTED]

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
RLUG mailing list
RLUG@lists.lug.ro
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui