Laden...

Hunderte SNMP Abfragen gleichzeitig

Erstellt von Pioneer17 vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.309 Views
P
Pioneer17 Themenstarter:in
148 Beiträge seit 2007
vor 11 Jahren
Hunderte SNMP Abfragen gleichzeitig

Hallo zusammen

es geht mir grundsätzlich nur mal um den Lösungsweg geht. Das "wie" ist mir eigentlich soweit bekannt.

Was ist die optimale Vorgehensweise, wenn ich hunderte SNMP Anfragen durchführen muss. Es handelt sich um SNMP Abfragen welche, sagen wir mal, alle 10 Sekunden gemacht werden sollen.

  1. Variante:
    Alle Abgrafen sequenziell abarbeiten. Da sehe ich das Problem, dass wenn mehrere Hosts nicht erreichbar sein sollten, die restlichen Abfragen stehen bleiben. Weiter könnte es so oder so zu langsam sein, sagen wir mal, 400 Anfragen innerhalb von 10 Sekunden prüfen...

  2. Variante:
    Jede Abfrage in einem eigenen Thread laufen lassen. Da sehe ich ggf. das Problem mit den Threads. Ich weiss nicht ob das "sinnvoll" ist z.B. 400 Threads in einem Programm zu starten.

  3. Variante:
    Eine Mischung aus den Varianten 1 und 2: Abfrageblöcke zusammenstellen. D.h. 10 oder 20 Anfragen in einen Thread packen und diese 10-20 dann sequenziell abarbeiten.

Gerne nehme ich aber eure Vorschlage entgegen. Wie machen es die "Grossen" wie z.B. HP OpenView oder Nagios?

16.842 Beiträge seit 2008
vor 11 Jahren

Du willst alle 10 Sekunden 400 SNMP Abfragen abschicken? Dein Netzwerk-Heini wird Dir auf die Finger klopfen.

Die normalen Zyklen von einer Serverüberwachung ist zB 5 Minuten. Der Überwachungsdienst "WhatsUp Gold" empfiehlt auch nur bei Prio 1 Servern eine geringere Prüf-Frequenz.

Überleg Dir also, bei welchen Servern es sinn macht, und bei welchen nicht.
Dass Du das ganze asynchron machen musst, damit Du eben nicht in Turbolenzen kommst, hast Du ja schon selbst herausgefunden.
Man verwendet hierfür aber keine Threads, sondern Tasks bzw. unterhalb von .NET 4 den ThreadPool (sofern es keine Webanwendung ist).

1.361 Beiträge seit 2007
vor 11 Jahren

Hi Pioneer17,

bedenke, dass deine Operationen nicht CPU-lastig, sondern lediglich IO-lastig sind.
1.Sequentiell verschwendet zu viel Zeit beim warten. 1.Jede Anfrage ein Thread verschwendet zu viel "Thread-Resourcen" und damit unnötige Scheduling-, sowie Threadstartup/shutdown-Zeit 1.Daher: Asynchrones Abarbeiten mit Callbacks im Threadpool ! (mit dem .Net Async pattern)

beste Grüße
zommi