-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add additional trace to HttpConnectionPool #66605
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it be possible to add some telemetry counters? So that you wouldn't need to turn on the whole debugging logs to diagnose it.
cc @MihaZupan
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What kind of counters did you have in mind?
We could expose many things, but they may not be too useful in diagnosing an issue like this since they are all aggregated for the process.
I see
System.Net.Sockets
doesn't have a "current" connection attempt counter - I don't see a reason not to add that. We have "current" counters on all the other sources.Something like
PendingHttp11ConnectionCount
on Http would then be sort of redundant.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What I was trying to point out is that in order to get this diagnostics log, you need to turn on the internal logging. It's very verbose and chaotic and not designed to be used in production. I see it mostly as our internal logging helping us diagnose issues. In general, we don't recommend customers to turn this on. And there were even attempts to get completely rid of this.
So the question is whether this trace should help us or the customer diagnose the issue? If it's for customers, shouldn't it be part of the official HTTP telemetry?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
EventSource does have the LogLevel for a reason, so we could certainly expose a lot more info under debug/trace.
The "official" telemetry surface is an API we effectively promise not to break.
As such, these logs shouldn't be unique events with a bunch of parameters since they are likely to change/break in the future.
We can, however, have something like
Where you can still easily collect and aggregate all the information around the pool behavior, it just wouldn't be ideal for automatic processing.
Alternatively, we can start using the Keywords feature of EventSource (filtering by topic). Or the connection pool can have its own EventSource
System.Net.Http.ConnectionPool
.