Operational Limits for Business Central Online
To ensure the availability and quality of Business Central services, there are limits on certain operations. This article describes the limits and, in some cases, the strategy behind them.
Tip
Telemetry is gathered on some of the operations that have a limit. The telemetry provides insight into operations for which limits were exceeded. For more information, see Monitoring and Analyzing Telemetry.
Client connection limits
Setting | Description | Limit |
---|---|---|
Reconnect period | The time during which a client can reconnect to the service after being disconnected. | 10 minutes |
Data handling limits
Setting | Description | Limit |
---|---|---|
Max items in object graph | The maximum number of objects to serialize or deserialize. | 10,000 |
Max file size | The maximum size of files that can be uploaded to or downloaded from the service. | 350 MB |
Maximum stream read size | The maximum number of bytes that can be read from a stream (InStream object) in a single AL read operation. Examples include READ or InStream.READTEXT method calls. This setting pertains to UTF-8 and UTF-16 text encoding; not MS-DOS encoding. | 1,000,000 bytes |
Database limits
Setting | Description | Value |
---|---|---|
Search timeout | The time (in seconds) that a search operation on lists in the client continues before it's stopped. When the limit is reached, the following message displays in the client: Searching for rows took long and was stopped. Try to search or filter using different criteria. | 10 seconds |
SQL command timeout | The contextual time-out for a SQL command. | 30 minutes |
SQL connection idle timeout | The time that a SQL connection can remain idle before being closed. | 5 minutes |
SQL connection timeout | The time to wait for the service to connect to the database. When the time is exceeded, the attempt is canceled and an error occurs. This setting also applies to begin, rollback, and commit of transactions. | 1.5 minutes |
Long running SQL query threshold | The amount of time that an SQL query can run before a warning telemetry event occurs. If this threshold is exceeded, the following event is logged: Action completed successfully, but it took longer than the given threshold. | 1000 ms |
Asynchronous task limits
Setting | Description | Limit |
---|---|---|
Background sessions default wait timeout | The maximum amount of time that background sessions will wait to be processed. | 8 hours |
Background sessions max concurrent | The maximum number of background sessions per tenant that the server instance can actively process at the same time. Requests that exceed the limit will wait in the queue until a slot becomes available. | 10 |
Background sessions max queued | The maximum number of background sessions per tenant that can be waiting to be processed. | 100 |
ChildSessionsMaxConcurrency | The maximum number of child sessions that can run concurrently per parent session. When the value is exceeded, additional child sessions will be queued and run when a slot becomes available as other child sessions are finished. | 5 |
Child sessions max queue length | The maximum number of child sessions that can be queued per parent session. If the value is exceeded, an error occurs. | 100 |
Maximum concurrent running scheduled tasks | The maximum number of tasks that can run simultaneously for an environment. If there are many jobs running at the same time, you might experience that the response time for clients gets slower. If the value is too low, it might take longer for scheduled tasks to process. |
3 |
Maximum session recursion depth | The maximum number of nested sessions that can be created before reaching infinite recursion. If the limit is exceeded, a runtime error occurs with the message: Excessive recursive session creation detected, original session ID: [id], current session ID: [id]. | 14 |
Page background task default timeout | The default amount of time that page background tasks can run before being canceled. Page background tasks can be also given a timeout value when enqueued at runtime. This limit is used when no timeout is provided when the page background task is enqueued. | 2 minutes |
Page background task max timeout | The maximum amount of time that page background tasks can run before being canceled. Page background tasks can be also given a timeout value when enqueued at runtime. If a page background task is enqueued with a timeout greater than this limit, this limit is ignored. | 10 minutes |
Report limits
Setting | Description | Limit |
---|---|---|
Default max documents | The maximum number of documents that can be merged in a report using a Word layout. Users can override this setting on a report-basis from the report request page. If exceeded, the report will be canceled. Developers can override this setting by using MaximumDocumentCount property of a report. Client users can do the same when running a report from the report request page |
200 |
Max documents | The maximum number of documents that can be merged in a report using a Word layout. If exceeded, the report will be canceled. | 500 |
Default max execution timeout | The maximum execution time that it can take to generate a report by default. Users can override this setting on a report-basis from the report request page. If exceeded, the report will be canceled. Developers can override this setting by using the ExecutionTimeout property of a report. Client users can do the same via Report Limits and Settings page, or when running a report from the report request page as a one-time change. |
6 hours |
Max execution timeout | The maximum execution time that it can take to generate a report. If exceeded, the report will be canceled. | 12 hours |
Default max rows | The maximum number of rows that can be processed in a report by default. Users can override this setting on a report-basis from the report request page. If exceeded, the report will be canceled. Developers can override this setting by using the MaximumDataSetSize property of a report. Client users can do the same when running a report from the report request page. |
500,000 |
Max rows | The maximum number of rows that can be processed in a report. If exceeded, the report will be canceled by the server. | 1,000,000 |
Query limits
Setting | Description | Limit |
---|---|---|
Max execution timeout | The maximum execution time that it can take to generate a query. If exceeded, the query will be canceled. | 30 minutes |
Max rows | The maximum number of rows that can be processed in a query. If exceeded, the query will be canceled. | 1,000,000 |
Company limit (per environment)
Setting | Description | Limit |
---|---|---|
Max companies | The maximum number of companies that can be contained in one environment. | 300 |
Tip
This company limit will take effect in 2023 wave 1 release. When in effect, exceeding the limit will prevent you from doing some environment operations. For information about the consequences of exceeding the limit, go to Operational challenges with many companies per environment.
If you already have more than 300 companies in one environment, distribute them across more environments to avoid problems later.
OData request limits (per environment)
Setting | Description | Limit |
---|---|---|
Max body size | The maximum request body size. | 350 megabytes |
Max concurrent requests | The maximum number of OData V4 requests the server instance can actively process at the same time. Requests that come in when the the limit is exceeded, will wait in a queue until a time slot becomes available. The request waits in the server request queue until timeout (currently 8 minutes), where an HTTP response code 503 - Service Temporarily Unavailable is returned. |
5 |
Max connections | The maximum number of simultaneous OData requests on the server instance, including concurrent and queued requests. When the limit is exceeded, a 429 (Too Many Requests) error occurs. | 100 |
Max page size | The maximum number of entities returned per OData request. | 20,000 entities per request |
Max batch size | The maximum number of operations in an OData $batch request. | 100 operations per batch |
Max request queue size | The maximum number of pending OData V4 requests waiting to be processed. When the limit is exceeded, a 429 (Too Many Requests) error occurs. | 95 |
Rate | The number of OData requests per minute that are allowed. An HTTP response code 429 - Too Many Requests is returned if limits are exceeded. |
Sandbox: 300 requests/minute Production - 600 requests/minute |
Operation timeout | The maximum amount of time that the service gives a single OData request. When the limit is exceeded, an HTTP response code 408 - Request Timeout is returned.After 8 minutes, the session is canceled. |
8 minutes |
Max number of webhook subscriptions | The maximum number of Webhook subscriptions. | 200 |
SOAP request limits (per environment)
Setting | Description | Limit |
---|---|---|
Max concurrent requests | The maximum number of SOAP requests the server instance can actively process at the same time. Requests that come in when the limit is exceeded, will wait in a queue until a time slot becomes available. The request waits in the server request queue until timeout (currently 8 minutes), where an HTTP response code 503 - Service Temporarily Unavailable is returned . |
5 |
Max connections | The maximum number of simultaneous SOAP requests on the server instance, including concurrent and queued requests. When the limit is exceeded, a 429 (Too Many Requests) error occurs. |
100 |
Max message size | The maximum permitted size of a SOAP web service requests | 65,536 KB |
Max request queue size | The maximum number of pending SOAP requests waiting to be processed. When the limit is exceeded, a 429 (Too Many Requests) error occurs. | 95 |
Rate | Specifies how many SOAP requests per minute are allowed. An HTTP response code 429 - Too Many Requests is returned if limits are exceeded. |
Sandbox: 300 requests/minute Production: 600 requests/minute |
Operation timeout | The maximum amount of time that the service gives to a single SOAP request. When the limit is exceeded, HTTP response code 408 - Request Timeout is returned. |
8 minutes |
Tip
Throttling will happen when many requests are issued at the same time. If requests are taking a long time to complete, throttling might also occur due to the request queue being filled up. To optimize throughput, ensure to use APIs or OData over SOAP, as they execute faster.
See Also
Opinia
Prześlij i wyświetl opinię dla