MySQL Too many connections error¶
If you see the following error in the Morpheus UI logs:
SqlExceptionHelper - Data source rejected establishment of connection, message from server: "Too many connections"
it means the number connections between Morpheus application and mysql have reached the max_connections limit set in mysql (default is 151), or the max_active setting, which limits the number of connections on the Morpheus end (default is 150), and the limit needs to be raised, either in Morpheus or mysql, or both depending on the number of connections and configuration.
Note
The max_connections setting in mysql and the maximum used connections between an app node and mysql can be viewed in the Morpheus ui in the Administration - Health section under Database.
Important
In Single Morpheus app node configurations, the max_active
setting on the app node must be less than the max_connections
setting in mysql.
Important
In HA configurations, the max_active
setting is per app node, and the max_connections
setting in mysql must be greater than all app nodes max_active
values combined, ie (max_active
* $number_of_app_nodes) <= max_connections``.
Morpheus max_active
setting¶
Edit /etc/morpheus/morpheus.rb
and add mysql[‘max_active’] = $value
replacing $value
with desired desired number of maximum connections allowed by Morpheus to mysql. For example, to set max_active at 150:
mysql[‘max_active’] = 150
Replacing 100 with the desired number of maximum connections allowed by Morpheus to mysql.
Run morpheus-ctl reconfigure
for the setting to be applied. Reconfigure will not restart the ui unless additional ram has been added to the appliance host since the previous reconfigure. To edit the max_active without a reconfigure, update the max_active
setting in /opt/morpheus/conf/application.yml
. Please note the default setting of 150 will be applied upon the next reconfigure unless max_active
is defined as instructed above in the morpheus.rb
file.
mysql max_connections
setting¶
Important
Customers are responsible for configuring and maintaining external databases used by Morpheus. This explains how to set the max_connections
setting, but the value for the setting needs to be established by a customers qualified db admin.
In mysql prompt,
run mysql> SET GLOBAL max_connections = $value;
This will immediately write the variable, however it is only a temporary setting that will be overwritten upon restart of the mysql service.
To persist the max_connections
setting, edit my.cnf, and add max_connections = $value
replacing $value
with desired value, ie to set max_connections at 300 in in my.cnf, add:
max_connections = 300