Finalmente, encontrei uma maneira de superar a limitação 2 ^ 20 sem modificar o código-fonte do kernel:
Em /etc/sysctl.conf
:
fs.nr_open = 10485760
Modifique fs.nr_open
sobre 2 ^ 20 para resolver este problema.
Além disso, o limite 2 ^ 20 não é o fim do mundo. Há uma pessoa que conheço ter construído com sucesso um servidor do CentOS muito próximo desse limite, seu registro é 1025216
por enquanto. Se ele usa mem mais alto com configuração correta, sem dúvida ele pode superar essa limitação facilmente.
Aqui está o que ele fez (escrito por chinês, mas você pode ver a configuração dele):