Skip to main content

Overload Protection in SailFin

Posted by rampsarathy on July 25, 2008 at 1:28 AM PDT




http-equiv="content-type">
Overload Protection in SailFin

SailFin has been designed to provide a certain quality of service in
terms of the response times, call rate, etc ..  These QoS
parameters might be compromised if there is a sudden increase in the
load (Calls per second) directed at SailFin or because of some
additional load on the CPU on which SailFin is running.  It is
important to protect the system under these conditions so that the
users are not affected by these fluctuations.

  SailFin has an Overload protection system that would get
triggered if certain system attributes like the memory/CPU utilization
increases beyond a certain pre-configured threshold. The "Overload
Protection Manager (OLP) " is implemented as a pluggable layer in
SailFin, which enables it to be easily inserted and configured. The
OLP,  when enabled intercepts every request/response
(SIP/Http) that enters SailFin and allows it to be processed only if
the system is within the configured threshold values. A 503 response is
returned back to the client if the request enters the system which is
already overloaded either because of CPU or memory utilization. The OLP
layer interception happens as soon as the request is parsed and framed,
and this early interception guarantees that it consumes the least
possible resources while accomplishing its functionality.

The OLP functionlity is disabled by default in the SailFin server, and
can be configured quite easily by following the following steps.



1. Enable OLP by inserting the Overload Protection Manager into the
interception stack, this can be done by setting an element property
under the sip-container element of the configuration. The property name
is "olpInserted" and should be set to "true" as shown below.



asadmin set server-config.sip-container.property.olpInserted=true

server-config.sip-container.property.olpInserted = true

Please note that the server has to be restarted after changing the above property for it to take effect.


2. Configure the OLP to perform memory or CPU (or both) protection
shown below



For CPU regulation

asadmin set
server-config.sip-container.property.CpuOverloadRegulation=true



or



For Memory regulation

asadmin set
server-config.sip-container.property.MemOverloadRegulation=true





After steps 1 and 2 the overload protection is enabled and would use
the threshold values from code defaults.



3. You can configure the threshold values too. Following are the
threshold properties that can be configured and their default values



IrThreshold
:  Default value is 70

Threshold of the cpu for initial requests (range 0-100%). A 503
response will be returned when this level is reached.

E.g asadmin set
server-config.sip-container.property.IrThreshold=15




MemIrThreshold
:  Default value is 85

Sets the threshold of the memory for initial requests (range 0-100%). A
503 response will be returned when this level is reached

E.g asadmin set
server-config.sip-container.property.MemIrThreshold=50
style="font-style: italic;">




SrThreshold
Default value is 90

Sets the threshold of the cpu for subsequent requests (range 0-100%).

E.g asadmin set
server-config.sip-container.property.SrThreshold=90




HttpThreshold
Default value is 70

Sets the threshold of the cpu for http requests (range 0-100%)

E.g asadmin set
server-config.sip-container.property.HttpThreshold=60




MemHttpThreshold
:  Default value is 85

Sets the threshold of the memory for http requests (range 0-100%) style="font-style: italic;">

E.g asadmin set server-config.sip-container.property.MemHttpThreshold=80



MmThreshold
Default value is 99

Sets the threshold of the cpu for max load possible for handling
messages (range 0-100%), for both Http and Sip. The message, request/response will be dropped in case of SIP.

asadmin set
server-config.sip-container.property.MmThreshold=70




MemMmThreshold:
Default value is 99

Sets the threshold of the memory for max load possible for handling
messages (range 0-100%) for both Http and Sip. The message, request/response will be dropped in case of SIP.

asadmin set
server-config.sip-container.property.MemMmThreshold=50




4. Enhance protection algorithm by modifying the sampling parameters



SampleRate
Default value is 2

Sets the sample rate of updating the overload protection levels. Must
be a positive value.

E.g asadmin set
server-config.sip-container.property.SampleRate=5




NumberOfSamples
Default value is 5

Sets the number of consequence samples that is needed before overload
is  raised. The sample rate could minimum be set to 2.

E.g asadmin set
server-config.sip-container.property.NumberOfSamples=3




 

Following screenshots  show the configuration and the log file
when the system is overloaded


style="width: 498px; height: 315px;" alt="configuration"
src="http://weblogs.java.net/blog/rampsarathy/archive/olp_domainxml.png">



       
    Fig 1: Domain.xml with Cpu protection at
15%




style="width: 498px; height: 315px;" alt="Overload"
src="http://weblogs.java.net/blog/rampsarathy/archive/overloaded_log.png">



       
    Fig 2. Server.log when cpu utilization
is more than 15%.




style="width: 498px; height: 315px;" alt="sipp"
src="http://weblogs.java.net/blog/rampsarathy/archive/overloaded_sipp">



       
    Fig 3: sipp load generator running
invite scenario,



The 900 unexpected messages are the 503 responses received when system
is overloaded. Behaviour on a multi-cpu machine may be slightly different because of the way in which the CPU utilization may be calculated.

Related Topics >>