Opvizor Blog

How to Handle Database Connection Limits

Written by Dennis | Sep 27, 2023 3:12:36 PM

In today's technology-driven world, databases play a crucial role in storing and managing vast amounts of data. However, it is essential to be aware that most databases have a maximum open connection limit.

When this limit is reached, it can lead to performance issues and even cause the database to become unresponsive.

In this blog post, we will explore the concept of connection limits and discuss how they apply to popular databases such as Microsoft SQL, Oracle Database, MySQL, and PostgreSQL. We start with Microsoft SQL in this post.

Additionally, we will outline the steps to resolve this issue without having to restart the entire database.

When an application encounters the maximum connection limit of a database, it means that the database has reached its maximum capacity for accepting new connections. In this situation, the application will not be able to establish a new link to the database until an existing connection is closed or released.

The specific behavior of the application, when it encounters the maximum connection limit, may vary depending on how it is programmed. Some applications may display an error message indicating that the maximum connection limit has been reached, while others may simply fail to establish a new connection without providing any specific error message.

To resolve this issue, most often database administrators restart the database, which forces a recovery of all in-flight transactions and often associated errors to the ultimate web users. 

This is very disruptive and leads to lower customer satisfaction. We at Opvizor are offering a much more future-looking solution. But first, let’s understand what database convection limits are. 

Understanding Connection Limits

A connection limit refers to the maximum number of concurrent connections that a database can handle. This limit is set by the database management system (DBMS) and is typically defined based on the hardware resources available and the configuration settings.

When the number of open connections reaches the maximum limit, any new connection attempts are denied, resulting in connection failures.

The Case of Microsoft SQL

Microsoft SQL Server, a widely used relational database management system, also imposes connection limits. The maximum number of connections allowed depends on the edition of the SQL Server being used. You can query the current maximum by running:

SELECT name, value, value_in_use, [description] 
FROM sys.configurations 
WHERE name = 'user connections';

To check the currently active connections by different sources you can run:

By Client Machine

SELECT
client_net_address, 
COUNT(DISTINCT session_id) AS [Number of Sessions]

FROM
sys.dm_exec_sessions

WHERE
client_net_address IS NOT NULL

GROUP BY 
client_net_address

ORDER BY 
[Number of Sessions] DESC;

By Connection

SELECT 
c.client_net_address,
s.program_name,
COUNT(c.connection_id) AS [Number of Connections]

FROM 
sys.dm_exec_connections c

JOIN 
sys.dm_exec_sessions s ON c.session_id = s.session_id

GROUP BY 
c.client_net_address, s.program_name

ORDER BY 
[Number of Connections] DESC;

To make it even simpler to monitor the maximum and active connections we added that information to our Microsoft SQL integration in Opvizor/Cloud.

Changing the Maximum Connection Limit

To change the setting to a feasible maximum value, you can run:

sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'user connections', <new_value>;
RECONFIGURE;

Unfortunately, that change requires an MS SQL service restart.

Conclusion

In conclusion, understanding and effectively managing connection limits in databases is crucial in today's data-driven landscape. As technology advances, the demand for seamless and uninterrupted database access will only grow. By exploring alternative solutions and mitigating the need for disruptive restarts, we can ensure better performance, higher customer satisfaction, and a more future-proof approach to database management.

Stay tuned for more insights on this topic as we continue our blog post series, and if you haven't signed up for Opvizor/Cloud, visit https://cloud.opvizor.com/ to get your first integration running for free.