[large-scale][oslo.messaging] RPC workers and db connection

Arnaud Morin arnaud.morin at gmail.com
Fri Oct 21 14:55:37 UTC 2022


Hey all,

TLDR: How can I fine tune the number of DB connection on OpenStack
      services?


Long story, with some inline questions:

I am trying to figure out the maximum number of db connection we should
allow on our db cluster.

For this short speech, I will use neutron RPC as example service, but I
think nova is acting similar.

So, to do so, I identified few parameters that I can tweak:
rpc_workers [1]
max_pool_size [2]
max_overflow [3]
executor_thread_pool_size [4]


rpc_worker default is half CPU threads available (result of nproc)
max_pool_size default is 5
max_overflow default is 50
executor_thread_pool_size is 64

Now imagine I have a server with 40 cores,
So rpc_worker will be 20.
Each worker will have a DB pool with 5+50 connections available.
Each worker will use up to 64 "green" thread.

The theorical max connection that I should set on my database is then:
rpc_workers*(max_pool_size+max_overflow) = 20*(5+50) = 1100

Q1: am I right here?
I have the feeling that this is huge.

Now, let's assume each thread is consuming 1 connection from the DB pool.
Under heavy load, I am affraid that the 64 threads could exceed the
number of max_pool_size+max_overflow.

Also, I noticed that some green threads were consuming more than 1
connection from the pool, so I can reach the max even sooner!

Another thing, I notice that I have 21 RPC workers, not 20. Is it
normal?


[1] https://docs.openstack.org/neutron/latest/configuration/neutron.html#DEFAULT.rpc_workers
[2] https://docs.openstack.org/neutron/latest/configuration/neutron.html#database.max_pool_size
[3] https://docs.openstack.org/neutron/latest/configuration/neutron.html#database.max_overflow
[4] https://docs.openstack.org/neutron/latest/configuration/neutron.html#DEFAULT.executor_thread_pool_size

Cheers,

Arnaud.



More information about the openstack-discuss mailing list