Hello ADX experts.
I have a background worker that are doing calculations in near real-time. The results are then ingested to ADX using the .NET SDK.
It's important that the ingestion operation doesn't take too long, or it will accumulate a delay which causes the worker to "get behind". When inserting data to Azure SQL, the operation takes 10-30 ms which is acceptable.
However, ingesting to ADX takes much longer. When the traffic is low, streaming ingestion takes about 300 ms to complete, and queued ingestion about 100 ms. When the traffic increases, streaming ingestion takes 500-1000 ms, while queued ingestion takes 300-500 ms. The ReportLevel
is set to default FailuresOnly
.
Is this expected? What is a normal response time? I have tried increasing the SKU, but it didn't make much difference. It's the call to IKustoQueuedIngestClient.IngestFromDataReaderAsync
that takes time.
I need to wait for the call to return to know whether the data was ingested successfully or not, since the next action depends on it.
There are multiple threads ingesting data simultaneously, and I'm using a single instance of the client, as recommended here. The application is a Function App running in the same Azure region as the ADX cluster.
I'm not sure if the delay is caused by the thread-safety mechanisms in the client SDK or if the ingest API itself is slow.
Do you have any recommandations on how I can reduce the ingest response time?