Hello Everyone,
I am seeking insights on how ArcGIS Server manages connections to SQL Server when serving feature services, particularly in the context of SQL Server Standard Edition licensing constraints.
Scenario:
Questions:
Connection Pooling and Management:
Service Instance Configuration:
According to Microsoft, every user or device accessing SQL Server software, whether virtual or physical, must be licensed with a SQL Client Access License (CAL). This requirement extends to users and devices accessing the SQL Server software indirectly through another application or hardware device. My question is: When multiple geodatabases are registered from the same SQL Server instance, does this count as multiple users even if they are connected using the same SQL Server user account?
In other words, should I license only the single SQL Server user account used for registering the geodatabases, or should I license based on the number of connections in the connection pool?
Licensing Implications:
Thank you for your assistance.
Solved! Go to Solution.
Hello @gisarchitect @RedaAli
While I may not be able to address all of your concerns, I will do my best to answer as many as I can. Kindly find the details below (Hope it doesn't end up being a boring response 😁😞
Connection Pooling and Management:
Service Instance Configuration:
What best practices can be followed to configure the minimum and maximum number of service instances to optimize connection usage?
This depends on several variables, with the major factor being "how fast the service can address the request from the client." The faster it addresses the request, the sooner that instance will be free to answer new requests. If the instance is reused, so is the DB connection (no new connection needed). These are controlled by a few properties on the service, including:
Documents that would help in extensively understanding these capabilities include:
Additionally, what helps me a lot is "monitoring and adjustment," i.e., regularly monitoring the usage of service instances and adjusting the configuration as needed. Tools like ArcGIS Monitor can help track service performance and database connection usage.
Registered connection files in ArcGIS Server
This depends on the architecture you want to apply.
I can say that I am no expert in SQL Server Licensing. Hence, I did some research on this and read a lot of blogs and in these cases YouTube videos help me a lot. I will try to summarize what I could understand briefly
Key Points (From various sources)
Ensuring Compliance with SQL Server Standard Edition Licensing Constraints
Furthermore, again from reading different blogs and this time some YouTube Videos as well, SQL Server Standard Edition has licensing constraints based on the number of connections, here are some strategies and configurations to help ensure compliance and avoid exceeding these limits:
Strategies to Manage and Limit Concurrent Connections
Optimize Connection Pooling:
Configure Service Instances:
Monitor and Adjust:
Implement Efficient Query Practices:
Load Balancing:
Distribute Load: If feasible, distribute the load across multiple SQL Server instances. This can help in spreading out the connections and avoiding overloading a single instance.
User and Connection Management:
Configuration Examples
Example of Connection String with Max Pool Size:
Sample query:
Example of Monitoring Setup:
Hopefully this doesn't cause more confusion. I understand that the response is a bit long but I tried to keep it as short as possible and not miss out on any key points.
Hope it helps!
I have the same enquires.
can you help regarding this?
Hello @gisarchitect @RedaAli
While I may not be able to address all of your concerns, I will do my best to answer as many as I can. Kindly find the details below (Hope it doesn't end up being a boring response 😁😞
Connection Pooling and Management:
Service Instance Configuration:
What best practices can be followed to configure the minimum and maximum number of service instances to optimize connection usage?
This depends on several variables, with the major factor being "how fast the service can address the request from the client." The faster it addresses the request, the sooner that instance will be free to answer new requests. If the instance is reused, so is the DB connection (no new connection needed). These are controlled by a few properties on the service, including:
Documents that would help in extensively understanding these capabilities include:
Additionally, what helps me a lot is "monitoring and adjustment," i.e., regularly monitoring the usage of service instances and adjusting the configuration as needed. Tools like ArcGIS Monitor can help track service performance and database connection usage.
Registered connection files in ArcGIS Server
This depends on the architecture you want to apply.
I can say that I am no expert in SQL Server Licensing. Hence, I did some research on this and read a lot of blogs and in these cases YouTube videos help me a lot. I will try to summarize what I could understand briefly
Key Points (From various sources)
Ensuring Compliance with SQL Server Standard Edition Licensing Constraints
Furthermore, again from reading different blogs and this time some YouTube Videos as well, SQL Server Standard Edition has licensing constraints based on the number of connections, here are some strategies and configurations to help ensure compliance and avoid exceeding these limits:
Strategies to Manage and Limit Concurrent Connections
Optimize Connection Pooling:
Configure Service Instances:
Monitor and Adjust:
Implement Efficient Query Practices:
Load Balancing:
Distribute Load: If feasible, distribute the load across multiple SQL Server instances. This can help in spreading out the connections and avoiding overloading a single instance.
User and Connection Management:
Configuration Examples
Example of Connection String with Max Pool Size:
Sample query:
Example of Monitoring Setup:
Hopefully this doesn't cause more confusion. I understand that the response is a bit long but I tried to keep it as short as possible and not miss out on any key points.
Hope it helps!
To receive such a comprehensive and detailed response to a lengthy question with many points and topics is truly generous and deserving of immense gratitude. Thank you very much for your wonderful response, which makes me feel humbled to ask more questions, but I will take advantage of your generosity and ask one final question which is "The number of connections in the pool that ArcGIS use, is a property internally programmed or configured in ArcGIS Server which can be queried or known by someway? as I did not find this piece of information in any documentation or blog". Or it depends on the max number of connections configured in database server?
Hello @gisarchitect
I am glad I could clarify the concerns. I would be happy to answer this or try to take a shot at it.
As per my understanding, ArcGIS Server uses connection pooling to manage database connections efficiently and would depend on the "Connection Pooling and Instances settings " for the service and would also take in consideration the database settings.
For service instance settings:
In addition to above, The actual maximum pool size can be influenced by your database configuration from SQL Server , where connection strings might define a maximum pool size limit.
Furthermore, I think it a difficult task to get this information by querying some where. I think it would require you to create a load testing scenario, which I can try to think of but would require tools like Jmeter etc.
I will try to come up with some scenarios and share that with you.
Apologies for the delay in response, was a bit occupied with things.
Hope it helps!
Hello @ArchitSrivastava
I do appreciate your reply. Thanks and I would be glad if you shared with me those scenarios.
Thank you.