summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorDavid Härdeman <david@hardeman.nu>2020-06-22 15:50:06 +0200
committerDavid Härdeman <david@hardeman.nu>2020-06-22 15:50:06 +0200
commit80623b9ac9aedce77d27b7c0a54c1b1c245d9279 (patch)
tree36f368e5f1cd8dfcc6b4fe22806a8b4bf70582e5 /main.c
parentfcd154280c21746db7d994ed1be77f20f91c90c0 (diff)
Try to bump the max number of fds
Diffstat (limited to 'main.c')
-rw-r--r--main.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/main.c b/main.c
index f0cc399..8b2e37a 100644
--- a/main.c
+++ b/main.c
@@ -14,6 +14,8 @@
#include <cap-ng.h>
#include <pwd.h>
#include <grp.h>
+#include <sys/time.h>
+#include <sys/resource.h>
#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();