Limits¶
Rate Limits¶
To maintain the performance and stability of the API, rate limits are applied to API requests.
Ingestion API¶
The Ingest API supports a limit of 200kb/s (uncompressed). Throttling is enforced every minute, allowing a maximum of 12,000kb per minute per Plant and Device. If this limit is exceeded, a 429 response code will be returned, accompanied by a "retry-after" HTTP header that specifies the waiting time in seconds before attempting the request again. We recommend a maximum single message size of 200kb.
Telemetry API¶
The query endpoints are throttled depending on the cost of executed Kusto queries. The cost is evaluated from multiple Kusto metrics (range 1-100%):
- Duration in percent (180 seconds is 100%)
- CpuTime in percent (3240 seconds is 100%)
- ScannedExtentsRatio in percent: 100 * scannedExtentsCount / totalExtentsCount
The CostValue is calculated as follows:
CostValue = DurationPercent * 0.25 + CpuTimePercent * 0.25 + ScannedExtentsRatio * 0.25 + CountOfQueriesPercent * 0.25
The minimum cost for a request is 1, therefore there is a general limit of 50 requests per minute. For public endpoints, the CostValue limit is set at 50 per minute, per user, per endpoint.
The consumed cost of a call is indicated as the x-buhler-insights.costs-consumed
HTTP header. If the limit reached, a 429 Too Many Requests
response is generated specifying a Retry-After
HTTP header that outlines the awaiting duration for the next call.
Default Query Properties¶
- Request concurrency: Cores-Per-Node x 10 (On PROD, the value is 160)
- truncationmaxsize (max size): 64MB
- truncationmaxrecords (max rows): 500,000
- FanoutThreadsPercent (max cores per node): 100%
- FanoutNodesPercent (max nodes): 100%
- ServerTimeout (max execution time): 1 minute
- MaxMemoryPerQueryPerNode: 8589699072
Kusto Query Limits¶
For further information on Kusto query limits, please check this link.
{"environments":[],"pdf-download":true}