Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The Throttle mechanism Access throttling is used to control restrict access to services at different levels. Throttling functionality is provided by the Throttle feature which is bundled by default in the Service Management feature of the WSO2 feature repository. The WSO2 Throttle feature provides an effective and efficient way to apply the throttle mechanism to your Web services.

Throttling can be enabled at 3 levels as follows. In all 3 levels, specific module engagement steps are the same from step 4 onwards in the service-level module engagement section described here.

Global-Level- If it is enabled globally, the restrictions will be applied globally (for

three different levels as follows.

AnchorService-Level Access ThrottlingService-Level Access Throttling
  • Global-Level  : Restrictions apply to every message coming into the server). For information on how to access global-level access throttling configuration windows, refer to section Axis2 Module Management -> Configuring the 'wso2throttle' Module.Operation-Level - If it is enabled only for an operation in a given service, restrictions are applied only for the messages accessing that . To configure throttling globally, see Configuring the wso2throttle Module. 
  • Operation-Level Restrictions apply only to messages accessing a particular operation. For information on how to access operation-level module configuration windows, refer to section throttling in operation level, see  Operation Management.
  • Service-Level- If it is enabled for a particular service, restrictions are applied  : Restrictions apply to all the messages coming into that a particular service.
Service-Level Access Throttling
  • Information is given below.
Info

NOTE: The following section describes how to set throttling to services after the service is deployed. To set up throttling prior to its deployment, see Setting up throttling prior to service deployment.

Service-level access throttling

Use this function to add a throttle parameter that specifies a variable millisecond wait between calls or a variable maximum number of calls per unit of time. This would facilitate the facilitates smooth operation of Web services and REST using the Web service and HTTP client steps.

Info

The throttling option is disabled by default

. If you want to add the throttling mechanism, you should enable it

.

  Follow the instructions steps below to add throttling to a serviceenable it.1.

  1. Log
on
  1. in to the product's management console and
select "List" under "Services."

Image Removed

2. The "Deployed Services" page
  1. select Services > List under the Main menu.  
  2. The Deployed Services page appears. Select the service
for
  1. to which you want to enable throttling.
For example,

Image Removed

3. The "Service Dashboard" page (for that service) appears. In the "
  1.   
  2. The service's dashboard opens. Click Access Throttling from the Quality of Service Configuration
" panel, click "Access Throttling."

Image Removed

Anchor444. The "Throttling Configuration" page appears. In the "Enable Throttling" list, select "Yes" from the drop-down menu.

Image Removed

5.
  1.  panel.  
    Image Added
  2. The Throttling Configuration window appears. Enable throttling by selecting Yes as follows:
    Image Added
     
  3. The existing throttle configuration appears in the wizard.
Click "
  1. Click Add New Entry
."

Image Removed

 

Info
titleNote
To enter
  1.  and specify the parameters. Note: To enter new parameters or modify existing
parameters
  1. ones,
select "Allow" in the "Access" column.

Image Removed

 

6. Specify the parameters of the new entry.

Parameters for Throttling Configuration:

Range
  1. first select Allow in the Access column as follows.

    Image Added
    Parameters for throttling configuration are as follows:

    • Range - The IP address range or the domain that is restricted from accessing the service. Requests from such clients
will be
    • are restricted based on the specified values.
    • Type - This indicates the type of Range.
It can be IP or DOMAIN. It should be IP if the
    •  
      • IP - The range is given as a single IP address or
a range of IP addresses (for example,
      • an IP range such as 10.100.1.30-10.100.1.60
). It should be DOMAIN if the
      • DOMAIN - The range is given as
as
      • a domain
(for example
      • . E.g., *.wso2.com
)
      • . If you specify
configurations
      • configuration types of both IP and DOMAIN,
first
      • priority
will be
      • is given to DOMAIN level configurations.
    • Maximum Request Count (MRC) -
If 
    •  If  Access is set to Control, it will be the maximum number of requests that are served within the time interval specified by the Unit Time parameter.
    • Unit Time (UT) - The time period in milliseconds during which the maximum number of requests are served. This is the number specified by the Maximum Request Count. The throttle starts counting the number of units from the moment it is enabled and the number of requests served within that period.
    • Prohibit Time Period (PTP) -
If
    •  If the maximum request count is achieved before the unit time, this is the period during which no more requests are allowed to go in. By setting this value, the unit time slot is altered.
    • Access 
      • Allow
- Means that no
      •   : No restriction is applied for that range and all requests are allowed to go in as they come in.
      • Deny
- Means that access
      •   : Access is completely denied for that range.
      • Control

     

    Info

    NOTE: When the Access is set to Allow or Deny, MRC, UT and PTP parameters are not necessary and the said fields are deactivated. If it is Control, then the specified constraints are applied for that particular range.

 

  1. Example:

    MRC = 50

  1. , UT = 50000

  1. , PTP = 5000

If
  1. The above configuration means, if 50 requests are arrived within 35000ms (35s) in a particular time period, no more requests are taken in for another 5000ms (5s = PTP). This time, the UT is altered to 35000ms + 5000ms = 40000ms (40s)

7. If you set the parameters for a particular service, your configuration will be applied only to that particular service. On the other hand, if you reached this page from global configurations, these configurations will be applied globally.  

8. Once done specifying the parameters, click "Finish." Throttling will be engaged for that particular service.

Functions of Buttons:

Finish - Click "Finish" to submit
  1. Functions of buttons of the throttling configuration are as follows:
    • Finish  : Submits the current data. When
finished
    • clicked, your throttle configuration will be applied and the page will be redirected to the previous page.
    • Reset
- Click "Reset" to load
    •  : Loads the last submitted configuration
.
    • Default
- Click "Default" to load
    •   : Loads the default throttle configuration.
If you want to submit those data, you have to click Finish.Clear - Click "Clear" to clear
    • (Click Finish to submit)
    • Clear  : Clears all the text boxes in the user interface
.
    • Cancel
- Click "Cancel" to go
    •   : Navigates to the
"
    • Service Dashboard
" page. Excerpt
hiddentrue
WSO2 access throttling configuration.

Setting up throttling prior to service deployment

To configure throttling to a service before deploying it, add your throttling configuration in an XML file by the name  <service name>_services.xml  and save it in  <PRODUCT_HOME>/repository/deployment/server/<folder_of_the_service_type> For example, to define throttling to a data service by the name  CSVSampleService, create CSVSampleService _services.xml  in  <PRODUCT_HOME>/repository/deployment/server/dataservices  folder.

Code Block
languagehtml/xml
<service name="CSVSampleService"> 
  <module ref="wso2throttle"/>
  <wsp:Policy wsu:Id="WSO2ServiceThrottlingPolicy">
   <wsp:ExactlyOne>
     <wsp:All>
      <throttle:ServiceThrottleAssertion>
         <wsp:Policy>
           <throttle:ID throttle:type="DOMAIN">10.100.0.205</throttle:ID>
           <wsp:Policy>
             <throttle:Control>
               <wsp:Policy>
                 <throttle:MaximumCount>2</throttle:MaximumCount>
                 <throttle:UnitTime>20000</throttle:UnitTime>
                 <throttle:ProhibitTimePeriod wsp:Optional="true">30000</throttle:ProhibitTimePeriod>
               </wsp:Policy>
             </throttle:Control>
           </wsp:Policy>
         </wsp:Policy>
         <wsp:Policy>
           <throttle:ID throttle:type="DOMAIN">other</throttle:ID>
           <wsp:Policy>
             <throttle:Allow/>
           </wsp:Policy>
         </wsp:Policy>
      </throttle:ServiceThrottleAssertion>
     </wsp:All>
   </wsp:ExactlyOne>
  </wsp:Policy>
</service>