SharePoint – People Picker times out – Hybrid App Launcher issue
This was a really unique situation where a network problem for the Hybrid App Launcher caused People Picker to intermittently time out and display no results.
Note: The two features are not directly related as you’ll see below.
Let me explain:
When you configure Hybrid OneDrive and Sites in SharePoint 2016, it adds an asynchronous call to the following URL in order to render some SharePoint Online links within your SharePoint on-prem App Launcher (aka: “waffle menu”, aka: “suite nav”).
http://yoursiteURL/_api/Microsoft.SharePoint.Portal.SuiteNavData.GetSuiteNavData?v=2&Locale=en-US
I found that if enough of those requests for the Hybrid App Launcher build up, it will cause IIS to queue-up the People Picker requests, causing them to time out before they can be executed, which results in the “Sorry, we’re having trouble reaching the server” error.
I’ll show how I reproduced this behavior in a test environment:
First I set my Hybrid Mysite URL to an IP that doesn’t exist in my network so I can simulate the behavior you would see if traffic from your on-prem SharePoint servers to your SharePoint Online sites IP address is being eaten by your firewall / proxy:
In Netmon, I see my WFE reach out to that IP and never get a response, which is exactly what you would see if a firewall or proxy server was eating those packets.
In Fiddler, I see the request to _api/Microsoft.SharePoint.Portal.SuiteNavData.GetSuiteNavData hang there while the page loads, but doesn’t show the menu.
A single “hung-up” Hybrid App Launcher request will not cause the People Picker problem. It still performs without issue while the Hybrid App Launcher menu works on loading.
However, if you create a large number of these Hybrid App Launcher requests (like you would see in a Production environment), they start to queue-up, as seen in IIS Manager:
I simulated a large number of requests to my test site using PowerShell:
for($i=1; $i -lt 100; $i++)
{$ie = New-Object -comObject InternetExplorer.Application
$start = get-date
$ie.visible = $false
$ie.navigate(“http://j16/sites/team”)
while($ie.Busy -eq $true){Start-Sleep -Seconds 3
$timetaken = ((get-date) – $start).TotalMilliseconds
Write-Output (“{0} {1} {2}” -f (get-date), $res.StatusCode.value__, $timetaken)
$ie.quit()}}
At a certain point, if too many of these Hybrid App Launcher requests (_api/Microsoft.SharePoint.Portal.SuiteNavData.GetSuiteNavData) build up, the People Picker requests (_vti_bin/client.svc/ProcessQuery) will also be queued, and the problem will reproduce. You type a name into the People Picker control, and it spins for about 25 seconds before failing with “Sorry, we’re having trouble reaching the server.”
The SharePoint ULS log for the People Picker request looks like this:
-There’s just a big time gap between these two events, near the beginning of the request:
02/28/2018 09:58:37.39 w3wp.exe (0x1AE0) 0x00B4 SharePoint Foundation Asp Runtime avwhv Medium SPRequestModule.PreRequestExecuteAppHandler End fef44e9e-7055-e088-a10e-e935459d33d7
02/28/2018 09:59:42.93 w3wp.exe (0x1AE0) 0x2D2C SharePoint Foundation Logging Correlation Data 9gc5 Verbose Thread change; resetting trace level override to 0; resetting correlation to fef44e9e-7055-e088-a10e-e935459d33d7 fef44e9e-7055-e088-a10e-e935459d33d7
— Once it actually gets to processing the CSOM request, it’s quite fast:
02/28/2018 09:59:43.29 w3wp.exe (0x1AE0) 0x2D2C SharePoint Foundation CSOM agw11 Medium End CSOM Request. Duration=361 milliseconds. fef44e9e-7055-e088-a10e-e935459d33d7
Please keep in mind that this “queuing” of requests caused by the Hybrid App Launcher not only effects People Picker, but any other CSOM or REST requests for that web application as well.
So it’s not so much that the People Picker and Hybrid App Launcher issues are “related”. It’s more like the Hybrid App Launcher issue causes a performance problem, of which People Picker is a victim.
Moral of the Story:
1. Misconfiguration of one part of the product can impact other parts of the product in ways you may not expect.
2. If you configure Hybrid OneDrive and Sites, make sure your On-Prem SharePoint servers can directly access your SharePoint Online “My Site” URL.