First, as my colleague Rhoderick wrote in a nice and easy-to-read “Troubleshooting Content Indexing” article, we can use the Troubleshoot-CI.ps1 script to try detect other potential issues such as deadlocks (threads blocked and search is waiting on these to continue to index), corruption (not likely here as the state is “Healthy” for the indexes), stall (usually a one time issue that a restart of the Exchange Search service solves), backlog.
In case the above troubleshooter is not identifying any issues, we can proceed to the below steps.
First, check that any File-Level anti-virus exclude the scan of any Exchange Index files (as well as DB files, and other Exchange files).
Then, rebuild the symbolic links for each language that the SP may have striped out, and reset the index:
-> Open Exchange Management Shell by right-clicking the shortcut and selecting “Run as Administrator”.
-> Navigate to the Scripts folder from Exchange Management Shell.
-> Run the command, ".Repair-ExchangeSearchSymlinks.ps1" and check that it is completing successfully.
-> Run the command, ".ResetSearchIndex.ps1 -force "Mailbox Database" and check that it’s completing successfully.
Then disable TCP Chimney, RSS and NetDMA that may be a cause for this issue as well
-> Open Command Prompt and run the following NetSH commands:
Disable TCP Chimney (the functionnality to offload the network packet processing from the CPU to the Network Card)
=> netsh int tcp set global chimney=disabled
=> netsh int tcp set global rss=disabled
Disable NetDMA (Network Direct Memory Access)
=> Opened Registry Editor and navigated to HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
=> Right click Parameters and add a new DWORD (32-bit) EnableTCPA and set the value to 0.
Information for TCP, RSS, NetDMA/EnableTCPA can be found on http://support.microsoft.com/kb/951037/en-us
Optionnally, you can also disable IPV6 as well:
=> Open Registry Editor and navigate to HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
=> Right click Parameters and add a new DWORD (32-bit) DisabledComponents and set the value to 0xffffffff in Hexadecimal.
More information on http://technet.microsoft.com/en-us/network/cc987595.aspx
Finally, reboot the Exchange server to apply the above changes.
I recommend you test this procedure on a Lab first to get familiar with it, and to validate it in your environment before implementing these into production.