Po długich poszukiwaniach w końcu odkryłem, że systemd ma standardowy limit 4096 i niezależnie od tego, co ustawisz na poziomie systemu, poziom systemd zawsze będzie miał pierwszeństwo. Rozwiązaniem jest zmiana limitu otwartych plików systemd poprzez edycję /etc/systemd/system.conf i dodanie następującego ustawienia
DefaultLimitNOFILE=65536
Wygląda na to, że w systemd jest wiele domyślnych ustawień, które zastępują ustawienia systemowe, więc należy je ustawić w systemd
Więc jeśli jest to przydatne dla ludzi, to są to moje ostateczne ustawienia dla serwera Ubuntu 16.04 do uruchamiania produkcyjnego redis.
Edytuj /etc/systemd/system.conf (sudo nano /etc/systemd/system.conf) i dodaj
DefaultLimitNOFILE=65536
Edytuj /etc/security/limits.conf (sudo nano /etc/security/limits.conf) i dodaj
* soft nofile 64000
* hard nofile 64000
root soft nofile 64000
root hard nofile 64000
Edytuj /etc/pam.d/common-session (sudo nano /etc/pam.d/common-session) i dodaj
session required pam_limits.so
Edytuj /etc/pam.d/common-session-noninteractive (sudo nano /etc/pam.d/common-session-noninteractive) i dodaj
session required pam_limits.so
Edytuj /etc/rc.local (sudo nano /etc/rc.local) i dodaj
sysctl -w net.core.somaxconn=65535
Edytuj /etc/sysctl.conf (sudo nano /etc/sysctl.conf) i dodaj
vm.overcommit_memory = 1
Edytuj /etc/rc.local (sudo nano /etc/rc.local) i dodaj
echo never > /sys/kernel/mm/transparent_hugepage/enabled