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
This commit is contained in:
parent
2ac23519d0
commit
de45d72603
|
@ -1722,6 +1722,11 @@ int main(int argc, char *argv[]) {
|
||||||
signal(SIGWINCH, columns_lines_cache_reset);
|
signal(SIGWINCH, columns_lines_cache_reset);
|
||||||
sigbus_install();
|
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) {
|
if (arg_action == ACTION_NEW_ID128) {
|
||||||
r = generate_new_id128();
|
r = generate_new_id128();
|
||||||
goto finish;
|
goto finish;
|
||||||
|
|
|
@ -1074,3 +1074,5 @@ int same_fd(int a, int b);
|
||||||
|
|
||||||
int chattr_fd(int fd, bool b, int mask);
|
int chattr_fd(int fd, bool b, int mask);
|
||||||
int chattr_path(const char *p, bool b, int mask);
|
int chattr_path(const char *p, bool b, int mask);
|
||||||
|
|
||||||
|
#define RLIMIT_MAKE_CONST(lim) ((struct rlimit) { lim, lim })
|
||||||
|
|
|
@ -7409,6 +7409,11 @@ int main(int argc, char*argv[]) {
|
||||||
goto finish;
|
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())
|
if (!avoid_bus())
|
||||||
r = bus_open_transport_systemd(arg_transport, arg_host, arg_scope != UNIT_FILE_SYSTEM, &bus);
|
r = bus_open_transport_systemd(arg_transport, arg_host, arg_scope != UNIT_FILE_SYSTEM, &bus);
|
||||||
|
|
||||||
|
|
|
@ -20,5 +20,9 @@ PrivateNetwork=yes
|
||||||
ProtectSystem=full
|
ProtectSystem=full
|
||||||
ProtectHome=yes
|
ProtectHome=yes
|
||||||
|
|
||||||
|
# If there are many split upjournal files we need a lot of fds to
|
||||||
|
# access them all and combine
|
||||||
|
LimitNOFILE=16384
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
Also=systemd-journal-gatewayd.socket
|
Also=systemd-journal-gatewayd.socket
|
||||||
|
|
|
@ -17,5 +17,9 @@ PrivateTmp=yes
|
||||||
PrivateDevices=yes
|
PrivateDevices=yes
|
||||||
WatchdogSec=20min
|
WatchdogSec=20min
|
||||||
|
|
||||||
|
# If there are many split up journal files we need a lot of fds to
|
||||||
|
# access them all and combine
|
||||||
|
LimitNOFILE=16384
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|
|
@ -26,5 +26,7 @@ WatchdogSec=1min
|
||||||
FileDescriptorStoreMax=1024
|
FileDescriptorStoreMax=1024
|
||||||
|
|
||||||
# Increase the default a bit in order to allow many simultaneous
|
# Increase the default a bit in order to allow many simultaneous
|
||||||
# services being run since we keep one fd open per service.
|
# services being run since we keep one fd open per service. Also, when
|
||||||
|
# flushing journal files to disk, we might need a lot of fds when many
|
||||||
|
# journal files are combined.
|
||||||
LimitNOFILE=16384
|
LimitNOFILE=16384
|
||||||
|
|
Loading…
Reference in a new issue