From 80623b9ac9aedce77d27b7c0a54c1b1c245d9279 Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Mon, 22 Jun 2020 15:50:06 +0200 Subject: Try to bump the max number of fds --- main.c | 20 ++++++++++++++++++++ utils.c | 8 ++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index f0cc399..8b2e37a 100644 --- a/main.c +++ b/main.c @@ -14,6 +14,8 @@ #include #include #include +#include +#include #include "main.h" #include "signal-handler.h" @@ -565,6 +567,7 @@ main(int argc, char **argv) { struct server *server; unsigned server_count; + struct rlimit old_rlimit; cfg_init(argc, argv); @@ -572,6 +575,23 @@ main(int argc, char **argv) cfg_read(); + /* + * In the splice case we use 4 fds per proxy connection... + */ + if (prlimit(0, RLIMIT_NOFILE, NULL, &old_rlimit) == 0) { + struct rlimit new_rlimit; + + new_rlimit.rlim_cur = old_rlimit.rlim_max; + new_rlimit.rlim_max = old_rlimit.rlim_max; + + if (prlimit(0, RLIMIT_NOFILE, &new_rlimit, NULL) == 0) + debug(DBG_MALLOC, "prlimit(NOFILE): %u/%u -> %u/%u", + (unsigned)old_rlimit.rlim_cur, + (unsigned)old_rlimit.rlim_max, + (unsigned)new_rlimit.rlim_cur, + (unsigned)new_rlimit.rlim_cur); + } + uring_init(); igmp_init(); diff --git a/utils.c b/utils.c index 92e607d..49b8537 100644 --- a/utils.c +++ b/utils.c @@ -224,7 +224,7 @@ connect_cb(struct uring_task *task, int res) conn = task->priv; if (res < 0) { - debug(DBG_UR, "%s: connection to %s failed", + debug(DBG_SRV, "%s: connection to %s failed", task->name, conn->remote.addrstr); uring_task_close_fd(task); connect_next(task, conn); @@ -233,7 +233,7 @@ connect_cb(struct uring_task *task, int res) connection_set_local(conn, task->fd); - debug(DBG_UR, "%s: connection established %s -> %s", + debug(DBG_SRV, "%s: connection established %s -> %s", task->name, conn->local.addrstr, conn->remote.addrstr); conn->cb(conn, true); @@ -261,14 +261,14 @@ again: } if (!remote) { - debug(DBG_UR, "%s: no more remote addresses to attempt", + debug(DBG_SRV, "%s: no more remote addresses to attempt", task->name); goto out; } conn->next_addr++; connection_set_remote(conn, remote); - debug(DBG_MALLOC, "%s: attempting to connect to %s", + debug(DBG_SRV, "%s: attempting to connect to %s", task->name, conn->remote.addrstr); sfd = socket(conn->remote.storage.ss_family, SOCK_STREAM | SOCK_CLOEXEC, 0); -- cgit v1.2.3