[openstack-dev] [nova] Mysql db connection leaking?
Jay Pipes
jaypipes at gmail.com
Fri Apr 17 14:50:32 UTC 2015
On 04/17/2015 05:26 AM, Qiming Teng wrote:
> On Thu, Apr 16, 2015 at 01:27:51PM -0400, Jay Pipes wrote:
>> On 04/16/2015 09:54 AM, Sean Dague wrote:
>>> On 04/16/2015 05:20 PM, Qiming Teng wrote:
>>>>
>>>> Wondering if there is something misconfigured in my devstack
>>>> environment, which was reinstalled on RHEL7 about 10 days ago.
>>>> I'm often running into mysql connections problem as shown below:
>>>>
>>>> $ mysql
>>>> ERROR 1040 (HY000): Too many connections
>>>>
>>>> When I try dump the mysql connection list, I'm getting the followng
>>>> result after a 'systemctl restart mariadb.service':
>>>>
>>>> $ mysqladmin processlist | grep nova | wc -l
>>>> 125
>>>>
>>>> Most of the connections are at Sleep status:
>>>>
>>>> $ mysqladmin processlist | grep nova | grep Sleep | wc -l
>>>> 123
>>>>
>>>> As for the workload, I'm currently only running two VMs in a multi-host
>>>> devstack environment.
>>>>
>>>> So, my questions:
>>>>
>>>> - Why do we have so many mysql connections from nova?
>>>> - Is it possible this is caused some misconfigurations?
>>>> - 125 connections in such a toy setup is insane, any hints on nailing
>>>> down the connections to the responsible nova components?
>>>>
>>>> Thanks.
>>>>
>>>> Regards,
>>>> Qiming
>>>
>>> No, that's about right. It's 1 connection per worker. By default most
>>> daemons start 1 worker per processor. Each OpenStack service has a bunch
>>> of daemons. It all adds up pretty quick.
>>
>> And just to add to what Sean says above, there's nothing inherently
>> wrong with sleeping connections to MySQL. What *is* wrong, however,
>> is that the default max_connections setting in my.cnf is 150. :( I
>> frequently recommend upping that to 2000 or more on any modern
>> hardware or decent sized VM.
>>
>> Best,
>> -jay
>>
> Thanks, guys. So the key takeaway for me is:
>
> - 100~200 mysql connections is not big problem, provided those
> connections are sleeping;
Yep, correct, for MySQL.
> - Tuning mysql to support larger number of user connections is a
> must;
Yes, because the default is a measly 150 max_connections.
> - Number of mysql connections is not proportional to the number of
> VMs, it is more related to the number of cores, number of workers
> etc.
Yes. nova-compute workers (which are on each compute host that houses
VMs) actually do not contact the database directly. Instead, they
communicate with the nova-conductor service, which itself communicates
with the database. The nova-conductor service by default will maintain a
number of processes equal to the number of cores on the VM or baremetal
machine. Each of these processes will keep a pool of connections to MySQL.
In addition to nova-conductor, there are various other Nova services
that also make connections to MySQL.
Best,
-jay
More information about the OpenStack-dev
mailing list