Monday, September 17, 2012

Internal server error exception: System.ServiceModel.ServerTooBusyException: SearchService.svc is too busy. ---> System.Net.WebException: The remote server returned an error: (503) Server Unavailable.


Problem Summary
Search stops working when multiple users try to search the SharePoint site.
(Server restart can solve the issue which should not be accepted as a solution.)

Solution
Problem itself provided two clues :
- Search stops working with multiple users (Multiple requests causes problem)
-  Server restart can solve the issue  (Some cache is being cleaned which enables search again)

Please note 503 error is returned when web server directs request to web site itself. It means there is some limit of requests which can be served by web server. These settings are defined at application pool level.

FYI, SharePoint search is handled by Search Service Application which uses an application pool for serving search requests.

Given below are the configurations which are required to resolve this issue:

1. Configure Search Service Application to use a separate application pool if application pool is being shared by other Service Applications also.  
Reason : It application pool is being shared by other service applications, doing configuration changes can have unexpected impact on other services.

2. Increase application pool's (in advance settings) Queue Length from 1000 to 10000.
Reason : Increasing this limit would minimize the chances of throwing 'Server unavailable (503)' error.

3. Enable recycling for application pool on following conditions:
  i.) When number of requests exceed 100 count
  ii.) Every day at 1:00 AM.
Reason : Exception seems to be very much related with number of search requests processed by server crossing the limit. Enabling recycle settings would overcome this.

2 comments:

  1. This was spot-on. I have been fighting my search function for a while now. Thank you.

    ReplyDelete
  2. Bang on! Exact solution :)

    ReplyDelete