when you get this error first make sure you have enough resources (Ram, CPU, and Storage) on all farm servers participating in the crawl.
make sure this settings are set to the default settings :
C:Program FilesMicrosoft Office Servers15.0SearchRuntime1.0noderunner.exe.config
MEMORY ORIGINAL “nodeRunnerSettings memoryLimitMegabytes=”0″”
run the following power shell to change this settings :
Set-SPEnterpriseSearchService -PerformanceLevel Reduced
restart the search service
one other option is to lower the size of files crawl will skip the default is 64 mb
$searchapp = Get-SPEnterpriseSearchServiceApplication #check the current value; default should be 64 $searchapp.GetProperty(“MaxDownloadSize”) # Change the default size to 15 MB $searchapp.SetProperty(“MaxDownloadSize”, 15) $searchapp.Update() !! restart services
Creates a new crawl component for the given topology and search service instance.
$si = Get-SPEnterpriseSearchServiceInstance
$ssa = Get-SPEnterpriseSearchServiceApplication
$topology = Get-SPEnterpriseSearchTopology -SearchApplication $ssa
New-SPEnterpriseSearchCrawlComponent -SearchTopology $topology -SearchServiceInstance $si -SearchApplication $ssa
ref:
https://sharepoint.stackexchange.com/questions/200175/sharepoint-2013-search-crawl-error
https://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=215
https://docs.microsoft.com/en-us/powershell/module/sharepoint-server/New-SPEnterpriseSearchCrawlComponent?view=sharepoint-ps
https://docs.microsoft.com/en-us/sharepoint/search/best-practices-for-crawling
https://stuffandtacos.azurewebsites.net/2015/11/05/sharepoint-slow-search-crawling-rate-and-low-document-per-seconds-indicator/