On 25.07.2013 16:34, Daniel P. Berrange wrote: > On Thu, Jul 25, 2013 at 04:23:33PM +0200, Michal Privoznik wrote: >> This configuration knob lets user to set the length of queue of >> connection requests waiting to be accept()-ed by the daemon. IOW, it >> just controls the @backlog passed to listen: >> >> int listen(int sockfd, int backlog); >> --- >> daemon/libvirtd-config.c | 1 + >> daemon/libvirtd-config.h | 1 + >> daemon/libvirtd.aug | 1 + >> daemon/libvirtd.c | 4 ++++ >> daemon/libvirtd.conf | 6 ++++++ >> src/locking/lock_daemon.c | 2 +- >> src/lxc/lxc_controller.c | 1 + >> src/rpc/virnetserverservice.c | 6 ++++-- >> src/rpc/virnetserverservice.h | 2 ++ >> 9 files changed, 21 insertions(+), 3 deletions(-) >> >> diff --git a/daemon/libvirtd-config.c b/daemon/libvirtd-config.c >> index 107a9cf..c816fda 100644 >> --- a/daemon/libvirtd-config.c >> +++ b/daemon/libvirtd-config.c >> @@ -414,6 +414,7 @@ daemonConfigLoadOptions(struct daemonConfig *data, >> GET_CONF_INT(conf, filename, min_workers); >> GET_CONF_INT(conf, filename, max_workers); >> GET_CONF_INT(conf, filename, max_clients); >> + GET_CONF_INT(conf, filename, max_queued_clients); >> >> GET_CONF_INT(conf, filename, prio_workers); >> >> diff --git a/daemon/libvirtd-config.h b/daemon/libvirtd-config.h >> index 973e0ea..a24d5d2 100644 >> --- a/daemon/libvirtd-config.h >> +++ b/daemon/libvirtd-config.h >> @@ -63,6 +63,7 @@ struct daemonConfig { >> int min_workers; >> int max_workers; >> int max_clients; >> + int max_queued_clients; >> >> int prio_workers; >> >> diff --git a/daemon/libvirtd.aug b/daemon/libvirtd.aug >> index 7c56a41..70fce5c 100644 >> --- a/daemon/libvirtd.aug >> +++ b/daemon/libvirtd.aug >> @@ -56,6 +56,7 @@ module Libvirtd = >> let processing_entry = int_entry "min_workers" >> | int_entry "max_workers" >> | int_entry "max_clients" >> + | int_entry "max_queued_clients" >> | int_entry "max_requests" >> | int_entry "max_client_requests" >> | int_entry "prio_workers" >> diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c >> index 9f7fd8a..402b494 100644 >> --- a/daemon/libvirtd.c >> +++ b/daemon/libvirtd.c >> @@ -485,6 +485,7 @@ static int daemonSetupNetworking(virNetServerPtr srv, >> NULL, >> #endif >> false, >> + config->max_queued_clients, >> config->max_client_requests))) >> goto error; >> if (sock_path_ro) { >> @@ -497,6 +498,7 @@ static int daemonSetupNetworking(virNetServerPtr srv, >> NULL, >> #endif >> true, >> + config->max_queued_clients, >> config->max_client_requests))) >> goto error; >> } >> @@ -522,6 +524,7 @@ static int daemonSetupNetworking(virNetServerPtr srv, >> NULL, >> #endif >> false, >> + config->max_queued_clients, >> config->max_client_requests))) >> goto error; >> >> @@ -562,6 +565,7 @@ static int daemonSetupNetworking(virNetServerPtr srv, >> config->auth_tls, >> ctxt, >> false, >> + config->max_queued_clients, >> config->max_client_requests))) { >> virObjectUnref(ctxt); >> goto error; >> diff --git a/daemon/libvirtd.conf b/daemon/libvirtd.conf >> index af4493e..5353927 100644 >> --- a/daemon/libvirtd.conf >> +++ b/daemon/libvirtd.conf >> @@ -257,6 +257,12 @@ >> # over all sockets combined. >> #max_clients = 20 >> >> +# The maximum length of queue of connections waiting to be >> +# accepted by the daemon. Note, that some protocols supporting >> +# retransmission may obey this so that a later reattempt at >> +# connection succeeds. >> +#max_queued_clients = 1000 >> + >> >> # The minimum limit sets the number of workers to start up >> # initially. If the number of active clients exceeds this, >> diff --git a/src/locking/lock_daemon.c b/src/locking/lock_daemon.c >> index c4c1727..c45f45c 100644 >> --- a/src/locking/lock_daemon.c >> +++ b/src/locking/lock_daemon.c >> @@ -671,7 +671,7 @@ virLockDaemonSetupNetworkingNative(virNetServerPtr srv, const char *sock_path) >> #if WITH_GNUTLS >> NULL, >> #endif >> - false, 1))) >> + false, 0, 1))) >> return -1; >> >> if (virNetServerAddService(srv, svc, NULL) < 0) { > > I think we probably want to have a non-zero backlog for virtlockd, otherwise > we could get ECONNREFUSED errors when multiple VMs start in parallel, since > each one will trigger a connect(). Probably worth making it a config file > parameter too, while you're at it. In fact, 0 gets translated in virNetSocketListen to 30. Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list