Um processo pode alterar seus limites por meio da chamada do sistema setrlimit(2)
. Quando você executar ulimit -n
, deverá ver um número. Esse é o limite atual do número de descritores de arquivos abertos (que inclui arquivos, soquetes, canais etc.) para o processo. O comando ulimit
executou a chamada do sistema getrlimit(2)
para descobrir qual é o valor atual.
Aqui está o ponto chave: um processo herda seu limite atual de seu processo pai. Portanto, se você executasse ulimit -n 64
, definiria o limite de descritores de arquivos abertos desse shell para 64. Qualquer processo iniciado pelo shell teria o mesmo limite, a menos que esse novo processo chamasse setrlimit()
apropriadamente.
Para alterar o limite de descritor de arquivo aberto mongodb's
, você executaria ulimit -n 2048
(ou qualquer número grande que seu kernel permitir) em um shell. Você usaria esse shell para iniciar mongodb
. Como um processo filho, mongodb
herdaria o limite (grande) dos descritores de arquivos abertos.
Para modificar o limite de arquivos abertos do sistema, que parece mais a soma de todos os processos de limite de descritores de arquivos abertos, você precisa fazer algo como modificar /etc/sysctl.conf
e executar sysctl -p
. Veja o valor do parâmetro fs.file-max
em /etc/sysctl.conf
.