diff options
author | Lennart Poettering <lennart@poettering.net> | 2015-01-08 03:17:50 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2015-01-08 03:20:45 +0100 |
commit | de45d726034f33afdb0a185e62fc61bf10a0acd2 (patch) | |
tree | 866746bc12372cebe279c380339a374d69ed225b /src | |
parent | 2ac23519d04835e8d8dfbce3d08d9ff76db58a68 (diff) |
journal: bump RLIMIT_NOFILE when journal files to 16K (if possible)
When there are a lot of split out journal files, we might run out of fds
quicker then we want. Hence: bump RLIMIT_NOFILE to 16K if possible.
Do these even for journalctl. On Fedora the soft RLIMIT_NOFILE is at 1K,
the hard at 4K by default for normal user processes, this code hence
bumps this up for users to 4K.
https://bugzilla.redhat.com/show_bug.cgi?id=1179980
Diffstat (limited to 'src')
-rw-r--r-- | src/journal/journalctl.c | 5 | ||||
-rw-r--r-- | src/shared/util.h | 2 | ||||
-rw-r--r-- | src/systemctl/systemctl.c | 5 |
3 files changed, 12 insertions, 0 deletions
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 62931f14c9..db9576c493 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -1722,6 +1722,11 @@ int main(int argc, char *argv[]) { signal(SIGWINCH, columns_lines_cache_reset); sigbus_install(); + /* Increase max number of open files to 16K if we can, we + * might needs this when browsing journal files, which might + * be split up into many files. */ + setrlimit_closest(RLIMIT_NOFILE, &RLIMIT_MAKE_CONST(16384)); + if (arg_action == ACTION_NEW_ID128) { r = generate_new_id128(); goto finish; diff --git a/src/shared/util.h b/src/shared/util.h index 31103e957f..3b3035a1c7 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -1074,3 +1074,5 @@ int same_fd(int a, int b); int chattr_fd(int fd, bool b, int mask); int chattr_path(const char *p, bool b, int mask); + +#define RLIMIT_MAKE_CONST(lim) ((struct rlimit) { lim, lim }) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 679541493a..86b5ae0b03 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -7409,6 +7409,11 @@ int main(int argc, char*argv[]) { goto finish; } + /* Increase max number of open files to 16K if we can, we + * might needs this when browsing journal files, which might + * be split up into many files. */ + setrlimit_closest(RLIMIT_NOFILE, &RLIMIT_MAKE_CONST(16384)); + if (!avoid_bus()) r = bus_open_transport_systemd(arg_transport, arg_host, arg_scope != UNIT_FILE_SYSTEM, &bus); |