Business Connectivity Services: End User Implications – Part two: Changing External System Throttling

Introduction

In the first part of this article we covered implications of external system throttling thresholds for users of Business Connectivity Services (BCS), whether using Office 365® or on-premises installations of Microsoft SharePoint®. This is the second part of the article and describes the default threshold settings and how to change them when using on-premises installations of either Microsoft SharePoint® Foundation 2013 or Microsoft SharePoint® Server 2013. If you are using Office 365® you will not be able to change these thresholds.

This article is in six parts:

  1. Why this blog series
  2. Threshold Limit Errors
  3. Changing External System Throttling
  4. External Content Type Authorization Errors
  5. External System Authorization Errors
  6. Summary

External System Throttling

Each Business Data Connectivity (BDC) service application has throttling thresholds defined by throttling rules which consist of a throttle type and scope.

The throttle types are:

  • Items. The number of items returned from the external systems, such as the number of authors.
  • Size. The amount of data retrieved by the BCS Runtime from the external system in bytes.
  • Connections. The number of open connections to the external system.
  • Timeout. The time until an open connection is terminated, in milliseconds.
  • Metadata Size. Used to restrict the size of the metadata returned by the external system, specified in bytes.
  • Model Size. Used to restrict the size of the BDC model that can be imported into the BDC metadata store, specified in bytes.
  • Max Number Of Models. Used to restrict the number of BDC models that can be imported into a BDC metadata store per BDC service application. For a partitioned BDC service application then this is per tenant.
  • None. No throttle type specified.

Throttle scopes refer to type of connection that is used to contact the external system. Scopes includes Database, Web Service, WCF, OData and Custom. There is also a Global scope that includes all connector types, except for custom connectors. When a BDC service application is first created, the throttle rules do not include all combinations of throttle types and scopes. A throttle rule for the Global scope is used, when a throttle rule is not enabled for a throttle type for a specific scope.

For each throttling rule, not only do you have to specify the throttle type and scope, there are three properties defined, which are:

  • Enforced. When this property is set to True, the throttling rule is enabled.
  • Default. This property affects external lists and custom Web Parts. The first part of this article, provided examples of the error messages presented to the user based on this
  • property. Custom Web Parts can override this value and therefore can present more data than external lists.
  • Max. The limit used when custom Web Parts override the value in the Default property

The throttling rules that exist when a BDC service application is first created, whether in partition mode or non-partitioned mode, are displayed in the following table.

Scope Throttle Type Enforced Default Max 
GlobalConnectionsTrue200500
GlobalModelSizeFalse10,000,00050,000,000
GlobalMaxNumberOfModelsFalse10002000
DatabaseItemsTrue20001,000,000
DatabaseTimeoutTrue180,000600,000
WebServiceSizeTrue3,000,000150,000,000
WCFSizeTrue3,000,000150,000,000
WCFTimeoutTrue180,000600,000
WCFMetadataSizeFalse3,000,000150,000,000
ODataSizeTrue3,000,000150,000,000
ODataTimeoutTrue180,000600,000
ODataMetadataSizeFalse3,000,000150,000,000

Modifying External System Throttling Thresholds

You can retrieve and amend the throttling rules by using the Business Data Catalog Windows PowerShell® cmdlets, as shown in the following examples. First you need the BDC service application proxy. Assuming there is only one BDC service application in your farm, which is true for most on-premises installations, then you can use the following Windows PowerShell command:

 

$bdcproxy = Get-SPServiceApplicationProxy | where {$_.TypeName –like “Business*”};

To display the throttling configuration for a BDC service application, type a command similar to the following one, on one line:

Get-SPBusinessDataCatalogThrottleConfig –ServiceApplication $bdcproxy ` –Scope Global –ThrottleType Connections;

The output from the command is as follows:

Scope : Global ThrottleType : Connections Enforced : True Default : 200 Max : 500

 To disable a throttling rule, type the following command:

 Get-SPBusinessDataCatalogThrottleConfig –ServiceApplication $bdcproxy ` –Scope Global –ThrottleType Connections | Set-SPBusinessDataCatalogThrottleConfig ` -Enforced:$False;

 To modify a throttle rule, type the following command:

 $dbrule = Get-SPBusinessDataCatalogThrottleConfig –ServiceApplication $bdcproxy ` –Scope Database –ThrottleType Items; $dbrule | Set-SPBusinessDataCatalogThrottleConfig –Maximum 2000000 –Default 5000;

 Summary

This second part of the four and discussed the default external system throttling settings and how to modify them. By default the following throttling rules are defined.

  • Global Scope. Throttle Types: Connections, ModelSize, and MaxNumberOfModels.
  • Database Scope. Throttle Types: Items, and Timeout.
  • WebService Scope. Throttle Type: Size.
  • WCF Scope. Throttle Types: Size, Timeout, and MetadataSize.
  • OData Scope. Throttle Types: Size, Timeout, and MetadataSize.

Leave a comment