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>/
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.
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/d8af3568b8 b92748f61029a96 c46fd513b6795c2 /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.