-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
System.DirectoryServices.Protocols - Linux -> binding time #38610
Comments
If you can repro this, it might be good to get a dump to find out what's happening. It's possible this is a server side delay too. Maybe create an app that repros it and when you see the bind taking longer than 100 ms call dotnet-dump on your own proecess: https://docs.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-dump |
Finally found time to do this. @ericstj File: |
|
All right. What I did while getting an example of a bad case scenario (bad.nettrace): In the good case scenario (good.nettrace) I did almost the same, except the fact that I called the API twice, so at some point the trace should repeat itself, sorry. Files: |
@GrowSharp could you please check good.nettrace? When I open in PerfView (https://docs.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-trace#view-the-trace-captured-from-dotnet-trace) I get
bad.nettrace opens OK and I"ll see if anything jumps out (but this is @joperezr area of expertise) |
From bad.nettrace, the expensive path just ends in native code unfortunately: -- @noahfalk what is the best way to gather a trace that includes native frames here? I guess not |
correct dotnet trace doesn't have support for native code (not yet at least). On Linux you can use the perfcollect script here that runs a combination of perf (for native CPU sampled callstacks) + lttng (for runtime and EventSource events) |
@GrowSharp do you want to give that a try? Although, as they say, when a perf issue is egregious enough, you don't need a profiler, you need a debugger. Break in once or twice during the delay and inspect where the CPU is. Is that something you could try? I believe you need to use lldb. The closest I could find to instructions are here which assume you're debugging the CLR itself, but it should be much the same. @joperezr do you have more info? I assume @GrowSharp will need some -dev packages? |
I was trying to get it work for a few hours yesterday, but unfortunately without success.. |
Pushing to 6.0.0 for now as this is not required for 5.0.0 but we should finish up the investigation here. |
As I said here. I think that the problem will be on our side, in our messy 12 years old AD system. I think we can close this one also. Thank you very much for trying to help me everyone! |
Description
So problem is, that sometimes (really randomly) the bind takes 127 seconds to complete. It doesn't matter if it's anonymous bind or not. Just sometimes the .Bind(); takes roughly 127 seconds. Did some logging around it for you to see, see Data.
Configuration
Domain joined CentOS 7.8.2003
also Ubuntu 20.04
.NET Core 3.1.301, commit: 7feb845744
.Protocols version 5.0.0-preview.5.20278.1
Regression?
On Windows it does not happen.
Data
Time to
.Bind();
the connection:The text was updated successfully, but these errors were encountered: