I am searching for some details about the ArcGIS Server and how he handles the database connections.
When I define a connection using the ArcGIS server manager (UI), this connection will be shared with all services that are publish on this server, right ? Since n arcsoc processes are launched for each service I would assume that there is one connection to the database by arcsoc process. Am I right or might there be more than one connection by a arcsoc process ? If there is just one, this connection is multi threaded ? How does this work with different transactions ?
It looks like that there is nothing like a connection pool configuration (java based connection pools).
How are timeouts handled ? Is this configurable ?
Her is a good answer by @JakeSkinner
"A database connection is made for each ArcGIS Server instance (ArcSOC.exe) that is created for the service(s). The min and max number of instances can be set by right-clicking on the service > Service Properties > Pooling tab. By default, the minimum number of instances is set to 1 and the maximum is set to 2. Therefore, when you start the service 1 connection is made to the SDE geodatabase.
By default, an instance is created as Pooled. This means when a request (ie pan/zoom in web app) is made to the service, an instance is taken from the pool, and then returned when the request is over. Once another request is made, say from another web app, that same instance can be used for that service request. So, multiple requests will need to be made at the same time in order for another instance to be created, thus creating another connection to the SDE geodatabase. This will not exceed the maximum number of instances, so by default a service can never exceed two connections to the geodatabase unless this paramter is increased. If the max number of instances is exceeded, the client will have to wait until an instance is returned to the pool before their request is returned.
Say the max instances of a service is set to two and both are being used, creating two connections to the SDE geodatabase. Then one of the users is finished accessing the service. The second SDE connection will remain until the idle time expires (set within the Services Properties > Pooling tab). Once the idle time expires, the instance will be removed from the server and the connection deleted from the SDE geodatabase."
Every service published will stores the database connection string locally. Even if you delete the database connection in ArcGIS Manager you will still access the database hence view the service. But consider the points discussed here before deleting it from manager
Here is a comprehensive documentation about registering your database with ArcGIS Server . Hope this helps clear some mystery about the database connection in Server.