« Zurück zu Produkt

Dokumentation

UC_GetKernelStatistics

 array UC_GetKernelStatistics (int $InstanzID) 

Parameterliste

InstanzID

ID zum Util Control

Rückgabewert

Ein Array mit folgenden key => value Paaren:

Index Typ Beschreibung
MessageCounter integer Anzahl der Nachrichten, die seit dem Start von IP-Symcon in die Nachrichtenwarteschlange des Kernels gestellt wurden
MessageQueueDelay integer Wartezeit der ältesten noch nicht verteilten Nachricht in Millisekunden (0, wenn die Warteschlange leer ist)
MessageQueueSize integer Anzahl der Nachrichten, die aktuell in der Nachrichtenwarteschlange des Kernels auf ihre Verteilung warten
MessageSlowCounter integer Anzahl der Nachrichten, deren Verarbeitung in einem Kernel-Bestandteil länger als "MessageQueueWatchLimit" dauerte. Nur mit aktiviertem "MessageQueueWatch", sonst immer 0
RequestQueueSize integer Anzahl der Skriptausführungen, die aktuell auf einen freien PHP-Thread warten

Beschreibung

Die Funktion liefert Kennzahlen, mit denen sich die Auslastung des Kernels beurteilen lässt. Alle Ereignisse im System (Variablenaktualisierungen, Statusänderungen, Log-Meldungen, ...) werden als Nachrichten in eine Warteschlange gestellt und von dort an alle Empfänger verteilt. Steigen MessageQueueSize und MessageQueueDelay dauerhaft an, entstehen mehr Nachrichten, als verarbeitet werden können. Die Ursache lässt sich mit UC_GetMessageTypeList (welche Nachrichten) und UC_GetMessageSenderIDList (welche Objekte) eingrenzen. Ein dauerhaft hoher Wert von RequestQueueSize bedeutet, dass mehr Skripte gestartet werden, als PHP-Threads zur Verfügung stehen.

MessageCounter zählt seit dem Start von IP-Symcon, die Rate ergibt sich aus der Differenz zweier Abfragen. MessageSlowCounter wird nur erhöht, wenn der Spezialschalter "MessageQueueWatch" aktiviert ist (z.B. über IPS_SetOption); die Grenze legt "MessageQueueWatchLimit" fest (Standard 50 Millisekunden). Die Verarbeitung durch die einzelnen Instanzen erfasst IPS_GetInstanceMessageStatistics, deren Warteschlangen liefert IPS_GetInstanceMessageQueueSize.

Die ID der Util Control Instanz liefert z.B. IPS_GetInstanceListByModuleID mit der Modul-GUID {B69010EA-96D5-46DF-B885-24821B8C8DBD}. Existiert InstanzID nicht, schlägt die Funktion mit "Instance #... does not exist" fehl, gehört die Instanz zu einem anderen Modul, mit "Instance does not implement this function".

Beispiel

// ID der Util Control Instanz ermitteln
$id = IPS_GetInstanceListByModuleID('{B69010EA-96D5-46DF-B885-24821B8C8DBD}')[0];

print_r(UC_GetKernelStatistics($id));

/* liefert z.B.:
Array
(
    [MessageCounter] => 184
    [MessageQueueDelay] => 0
    [MessageQueueSize] => 0
    [MessageSlowCounter] => 0
    [RequestQueueSize] => 0
)
*/

// Nachrichten pro Sekunde ermitteln
$before = UC_GetKernelStatistics($id)['MessageCounter'];
sleep(10);
$after = UC_GetKernelStatistics($id)['MessageCounter'];
echo 'Nachrichten pro Sekunde: ' . (($after - $before) / 10);
Haben Sie noch Fragen?