SNIReadSyncOverAsync Performance issue
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
Introduction
SNIReadSyncOverAsync showing up as a performance hotspot usually means synchronous database reads are occurring on top of an asynchronous network stack. In practice, that is a sign that your application is blocking threads during I/O, which reduces throughput and increases latency under load.
What the Name Is Telling You
The name itself is a clue:
- '
SNIrefers to the SQL Server network layer.' - '
Readmeans data is being read from the database connection.' - '
SyncOverAsyncsuggests synchronous waiting over an asynchronous implementation path.'
That combination is usually not what you want in a high-concurrency application. It often means a thread is waiting instead of letting I/O complete naturally through async flow.
Why Sync-Over-Async Hurts
When you block synchronously on database I/O, you pay in several ways:
- More threads are tied up waiting.
- Thread-pool pressure increases under load.
- Request latency grows.
- Scalability drops even if the database is healthy.
This is why the hotspot matters. It is not just a cosmetic profiler entry. It often points to a real throughput bottleneck.
Typical Causes in Application Code
A common pattern is mixing asynchronous APIs with synchronous waiting, such as:
Or:
Or simply using synchronous ADO.NET calls everywhere in a workload that should scale asynchronously.
The fix is usually not inside SNI itself. The fix is higher up in the application call chain.
Prefer Async All the Way Through
If the request path is meant to be asynchronous, keep it asynchronous from the controller or service layer down to the database call.
The important part is not just ExecuteReaderAsync. It is the end-to-end async flow.
When Synchronous Calls Are Still Acceptable
Synchronous database calls are not automatically wrong. In a low-concurrency console tool or one-off batch script, sync code may be fine. The performance issue becomes meaningful when the application is serving many concurrent requests or when thread blocking becomes a bottleneck.
So the real question is workload shape, not ideological purity.
Diagnose Before You Guess
If this hotspot appears in profiling, check:
- Whether request handlers are truly async.
- Whether any
.Result,.Wait(), or.GetAwaiter().GetResult()calls exist. - Whether synchronous ADO.NET APIs are being used in throughput-sensitive paths.
- Whether the database itself is slow, which can amplify the thread-blocking cost.
The profiler name points to sync-over-async behavior, but the application architecture determines how harmful it becomes.
Common Pitfalls
- Calling async database APIs and then blocking on them synchronously.
- Assuming that one
Asyncmethod name makes the whole path asynchronous. - Blaming SQL Server immediately when the real issue is application-side thread blocking.
- Mixing sync and async code paths inconsistently under load.
- Optimizing micro-details before confirming where the thread-blocking pattern actually starts.
Summary
- '
SNIReadSyncOverAsyncusually indicates synchronous waiting over asynchronous database I/O.' - The performance cost is thread blocking, especially under concurrency.
- The usual fix is to use async all the way through the request path.
- Blocking on async calls with
.Resultor.Wait()is a common cause. - Treat the hotspot as a design signal, not just a low-level library curiosity.
Related reading
- Solandra vs. ElasticSearch
- Solr shard distribution data not distributed evenly
- SolrCloud index replication
- Solving a communications link failure with JDBC and MySQL
- Solve all 4x4 mazes simultaneously with least moves
- Solving N-Queens Problem... How far can we go?
- SNS topic not publishing to SQS
- Socket hang up using axios or request to get data from google geocoding api

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.