Acabei de passar por isso no Centos 7 (o mesmo no RHEL) e fiz uma postagem no blog, cobrindo-a porque tinha muitos problemas, mesmo com todas essas postagens: coding-stream-of-consciousness.com/2018/12/21/… . Geralmente, junto com os arquivos abertos, você precisa aumentar o nproc, que realmente reside em vários arquivos de configurações ... e se você usar systemd / systemctl que possui suas próprias configurações separadas. É meio louco.
Você sempre pode tentar fazer um ulimit -n 2048. Isso redefinirá apenas o limite do seu shell atual e o número especificado não deve exceder o limite máximo
Cada sistema operacional possui uma configuração de limite rígido diferente em um arquivo de configuração. Por exemplo, o limite de arquivo aberto no Solaris pode ser definido na inicialização em / etc / system.
set rlim_fd_max = 166384
set rlim_fd_cur = 8192
No OS X, esses mesmos dados devem ser definidos em /etc/sysctl.conf.
kern.maxfilesperproc=166384
kern.maxfiles=8192
No Linux, essas configurações geralmente estão no /etc/security/limits.conf.
Existem dois tipos de limites:
limites flexíveis são simplesmente os limites impostos atualmente
limites rígidos marcam o valor máximo que não pode ser excedido definindo um limite flexível
Os limites flexíveis podem ser definidos por qualquer usuário, enquanto os limites rígidos são alteráveis apenas pela raiz. Limites são propriedade de um processo. Eles são herdados quando um processo filho é criado, portanto, os limites de todo o sistema devem ser definidos durante a inicialização do sistema nos scripts init e os limites do usuário durante o login do usuário, por exemplo, usando pam_limits.
Geralmente, há padrões definidos quando a máquina é inicializada. Portanto, mesmo que você possa redefinir seu ulimit em um shell individual, você pode achar que ele redefine o valor anterior na reinicialização. Você pode desejar grep seus scripts de inicialização para os comandos ulimit de existência, se desejar alterar o padrão.
@hoyhoy Eu posso mudar isso como, 2048mas não como, 4500por quê? veja isto
alhelal
@GaneshKrishnan o que adicionar nos arquivos linux que você mencionou?
Aviral sanjay
O @Pritam Windows não possui nenhum ulimit. Você deve especificar o que está usando (por exemplo, WSL, Cygwin).
Melebius 19/11/19
99
Se você estiver usando Linux e recebeu o erro de permissão, precisará aumentar o limite permitido no /etc/limits.confou/etc/security/limits.conf arquivo (onde o arquivo está localizado depende da sua distribuição específica do Linux).
Por exemplo, para permitir que qualquer pessoa na máquina aumente seu número de arquivos abertos até 10000, adicione a linha ao limits.confarquivo.
* hard nofile 10000
Em seguida, efetue logout e logon no seu sistema e você poderá:
NOTA: O curinga não se aplica ao rootusuário. Você precisa especificar root hard nofile 10000se deseja ajustar o rootlimite.
Joshua Pinter
1
@ JoshPinter Haha, eu passei as últimas 3 horas, mais ou menos, passando por todos os tutoriais sobre como alterar o arquivo ulimite finalmente descobri que estou logado como root. É por isso que eu continuava vendo o 1024 dentro ulimit -a. Troquei o cuidado selvagem e adicionei um *interior limits.conf. Tudo está bom agora, (estou usando as teclas ssh, não se preocupe: P) - Obrigado !!!
NiCk Newman
1
@NiCkNewman Estou feliz que você esteja rindo disso! Essa é uma boa característica em uma pessoa programador / sysops. Eu fiz a mesma coisa e não era tão jovial. Fico feliz que ajudou! :)
Joshua Pinter
SUPLEMENTO: Você pode encontrar também uma configuração neste dir: /etc/security/limits.d/.
Waldemar Wosiński
2
Abri o /etc/security/limits.conf pela primeira vez e notei que tudo está comentado por aí. Qual é o valor padrão de "hard nofile" então?
Ka3ak #
36
1) Adicione a seguinte linha a /etc/security/limits.conf
webuser hard nofile 64000
depois faça o login como usuário da web
su - webuser
2) Edite os dois arquivos a seguir para o usuário da web
anexar os arquivos .bashrc e .bash_profile executando
Se você alterar sua linha no limits.conf de 'hard' para 'soft', ele deverá se tornar o novo padrão e não exigir alterações nos perfis do bash.
precisa saber é o seguinte
Parece que você está repetindo etapas extras. Definir limites sozinho fará o mesmo que o perfil, mas em todas as sessões.
Eddie #
6
Se alguns de seus serviços estão se limitando a ulimits, às vezes é mais fácil colocar comandos apropriados no script init do serviço. Por exemplo, quando o Apache está relatando
[alerta] (11) Recurso temporariamente indisponível: apr_thread_create: não é possível criar o thread do trabalhador
Tente colocar ulimit -s unlimitedem /etc/init.d/httpd. Isso não requer uma reinicialização do servidor.
Respostas:
Você sempre pode tentar fazer um
ulimit -n 2048
. Isso redefinirá apenas o limite do seu shell atual e o número especificado não deve exceder o limite máximoCada sistema operacional possui uma configuração de limite rígido diferente em um arquivo de configuração. Por exemplo, o limite de arquivo aberto no Solaris pode ser definido na inicialização em / etc / system.
No OS X, esses mesmos dados devem ser definidos em /etc/sysctl.conf.
No Linux, essas configurações geralmente estão no /etc/security/limits.conf.
Existem dois tipos de limites:
Os limites flexíveis podem ser definidos por qualquer usuário, enquanto os limites rígidos são alteráveis apenas pela raiz. Limites são propriedade de um processo. Eles são herdados quando um processo filho é criado, portanto, os limites de todo o sistema devem ser definidos durante a inicialização do sistema nos scripts init e os limites do usuário durante o login do usuário, por exemplo, usando pam_limits.
Geralmente, há padrões definidos quando a máquina é inicializada. Portanto, mesmo que você possa redefinir seu ulimit em um shell individual, você pode achar que ele redefine o valor anterior na reinicialização. Você pode desejar grep seus scripts de inicialização para os comandos ulimit de existência, se desejar alterar o padrão.
fonte
2048
mas não como,4500
por quê? veja istoulimit
. Você deve especificar o que está usando (por exemplo, WSL, Cygwin).Se você estiver usando Linux e recebeu o erro de permissão, precisará aumentar o limite permitido no
/etc/limits.conf
ou/etc/security/limits.conf
arquivo (onde o arquivo está localizado depende da sua distribuição específica do Linux).Por exemplo, para permitir que qualquer pessoa na máquina aumente seu número de arquivos abertos até 10000, adicione a linha ao
limits.conf
arquivo.* hard nofile 10000
Em seguida, efetue logout e logon no seu sistema e você poderá:
ulimit -n 10000
sem um erro de permissão.
fonte
root
usuário. Você precisa especificarroot hard nofile 10000
se deseja ajustar oroot
limite.ulimit
e finalmente descobri que estou logado como root. É por isso que eu continuava vendo o 1024 dentroulimit -a
. Troquei o cuidado selvagem e adicionei um*
interiorlimits.conf
. Tudo está bom agora, (estou usando as teclas ssh, não se preocupe: P) - Obrigado !!!/etc/security/limits.d/
.1) Adicione a seguinte linha a
/etc/security/limits.conf
depois faça o login como usuário da web
2) Edite os dois arquivos a seguir para o usuário da web
anexar os arquivos .bashrc e .bash_profile executando
3) Faça logoff, faça login novamente e verifique se as alterações foram feitas corretamente:
É isso e eles boom, boom boom.
fonte
Se alguns de seus serviços estão se limitando a ulimits, às vezes é mais fácil colocar comandos apropriados no script init do serviço. Por exemplo, quando o Apache está relatando
Tente colocar
ulimit -s unlimited
em/etc/init.d/httpd
. Isso não requer uma reinicialização do servidor.fonte