It is SP2010 enterprise farm. It is a 2 sharepoint servers (both are wfe) and 1 SQL topology.
Whenever a user perform a update action (e.g. approve a task, delete a file) will get a generic SharePoint error with correlation ID. By look up the ID in ULS log we get something like
System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server.
In event viewer, we can find warning level log:
Exception information: Exception type: InvalidOperationException Exception message: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
When it happened, refresh the page will not resume. He has to close the browser and open the site again and it will works. When the user get error, other users do not get error at the same time (if other users do not perform "update" action).
Also, the update actually works. If the user check the same item he updated before, he can see the correct last modified time and the updated content.
What can be the cause?