Comment 3 for bug 1929446

Revision history for this message
Terry Wilson (otherwiseguy) wrote :

There are several things that I think need to happen:

1) This patch needs to be merged in python-ovs that stops using a non-monkeypatched select.poll() when checking for ovsdb connection completion - http://patchwork.ozlabs<email address hidden>/

2) os-vif should limit the tables that it registers here: https://github.com/openstack/os-vif/blob/d8af3568b8b92748f61029a96c46fd513b6795c2/vif_plug_ovs/ovsdb/impl_idl.py#L26 to only the tables that it uses. On connection it currently pulls in the whole database at connection, which takes a long time

3) In the next line, it could pass a probe_interval argument to idl.Idl which will increase the amount of time from the default of 5s for sending echo probes to the server. If downloading the entire DB from a busy ovsdb-server with lots of connections takes longer than 5s, it'll currently disconnect and try again w/o ever successfully connecting

4) Something like https://review.opendev.org/c/openstack/neutron/+/794892 can be done, overriding the python-ovs streams to use TCP keepliaves instead of ovsdb echo requests, making reconnections less likely on a loaded single-threaded ovsdb-server since the kernel will take care of them. Note that that patch probably should have configured TCP_KEEPIDLE, TCP_KEEPCNT, and TCP_KEEPINTVL instead of relying on whatever is configured with sysctl as the defaults are very long.