Monitoring Siebel Tasks and MTServers

Active Siebel multithreaded components like the SRBroker or ObjectManager usually consist of multiple MultiThreaded Servers (MTServers) and Tasks to handle multiple simultaneous requests or Siebel sessions. More common naming for a Siebel is a MTServer is processes, which is typically independent, have a separate address space and can be identified on an operating system by its process id (PID). Siebel Tasks are threads spawned by a process and do run in the same memory space as its parent process. Per multithreaded component the number of minimum, default or maximum processes (MTServers) and threads (Tasks) can be configured by the component parameters. The number of processes and tasks are component parameters, not process or tasks parameters. Important to comprehend is that the actual number of threads is distributed over the instantiated processes.

When a client component request is received, e.g. when a user starts a new browser session, the Server Request Broker is responsible for routing the request to a components MTServer on a Siebel server. Selection of the MTServer process is done based on the actual number of running Tasks for each of the MTServer processes on the Siebel Server. Ordinary the SRBroker should select the MTServer process with the least running Tasks and therefore distribute the number of Tasks per MTServer evenly.

When the SRBroker is not functioning properly tasks could not be evenly distributed over the MTServers and therefore degrade performance or, in case of an ObjectManager, even limit the number of users able to use the application. Abnormally terminated processes (MTServers) also terminate the running threads (Tasks) associated to that processes because they share the same memory space. In the case when terminated process is the MTServer of an ObjectManager the number of users loosing their sessions equals the number of running tasks for the terminated process, because each user session a maintained in a separate thread.

I have not yet seen a monitor which can monitor the distribution of the Tasks for MTServers and visualize this in a clear way. So therefore i gave it a shot to create one myself. The actual monitor, SBLTasksMonitor, is a java class which extends the SBLMonitor abstract class whereof more can be found in the articles A simple Java based Siebel CRM monitoring framework and Java class monitoring Siebel CRM workflow processes. The question for me was how the visualize the balancing of the Tasks over the MTThreads. I chose for a spider or radar chart wherein the distance of each variable, a MTServer process, represents the number of Tasks. Ideally, when having enough active MTServer processes, the chart should present a perfect circle. Any deviation from a evenly distribution of Tasks would me imminent visible for the viewer.

In the demonstration video below, the number of MTServer processes is limited to 3 and therefore should when the number of Tasks is evenly distributed over the MTServer processes present a equilateral triangle. In the video the initial state for the ObjectManager is 3 MTServer processes with 2 running tasks. At 00:00:10, the graph shows an imbalance of the distribution of the 2 Tasks over the 3 MTServers, in fact 1 MTServer is running all threads. At 00:00:32 a new Task is started and routed by the SRBroker to one of MTServers with the least number of Tasks. 2 additional Tasks are started at 00:00:47 which immediately shows that the evenly distribution of Tasks over the MTServers is gradually corrected. At this moment an additional presentation feature is shown, the variation of Tasks distribution over time. The lighter grey triangle shows the state of the Task distribution at the previous interval. At 00:01:04 the number of Tasks is distributed evenly, and the distribution of the Tasks at the 2 previous monitoring intervals is shown.

simplesblmonfwk3

The (updated) sourcecode, SiebelMonitor.zip, can be downloaded here.

blog comments powered by Disqus