Skip to content

Physical Bridge Backlog not reflected in ServerCounters #2997

Closed

Description

@nathan-miller23

Our service creates N ConnectionMultiplexer instances to N isolated redis servers, with Default BacklogPolicy. We then use ServerCounters.TotalOutstanding to load balance to least loaded server connections.

However, we noticed error messages like below, where qu (PhsyicalBridge backlog count) is `M+

StackExchange.Redis.RedisTimeoutException: The message timed out in the backlog attempting to send because no connection became available, command=ARGGALAXYUPSERTVERTEXTXN2, timeout: 10000, outbound: 0KiB, inbound: 0KiB, inst: 0, qu: 1144678, qs: 0, aw: False, bw: Activating, rs: ReadAsync, ws: Idle, in: 0, in-pipe: 0, out-pipe: 0, last-in: 406, cur-in: 0, sync-ops: 751280241, async-ops: 46587, serverEndpoint: 127.0.0.1:3278, conn-sec: 3059281.44, aoc: 0, mc: 1/1/0, clientName: 47..3, IOCP: (Busy=101,Free=3995,Min=1024,Max=4096), WORKER: (Busy=639,Free=3457,Min=1024,Max=4096), v: 2.7.17.27058 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts)

Further investigation showed that this ConnectionMultiplexer, despite have >1M messages in the queue, was reporting TotalOutstanding=0, and thus being preferentially chosen by our load-balancing algorithm.

The library currently exposes no public members for accessing the value of PhysicalBridge._backlogCurrentEnqueued directly. Thus, I propose the following small change to make ConnectionCounters.PendingUnsentItems more semantically meaningful, and allow end-users to more precisely differentiate between clients with varying backlog counts: #2996

Activity

  1. nathan-miller23 commented on Jan 30, 2026

    @nathan-miller23
    ContributorAuthor

    Fixed by #2996 issue is now closed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions