AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 48717
Accepted
Kevin
Kevin
Asked: 2009-08-01 14:35:35 +0800 CST2009-08-01 14:35:35 +0800 CST 2009-08-01 14:35:35 +0800 CST

Descritores de arquivos abertos máximos práticos (ulimit -n) para um sistema de alto volume

  • 772

Recentemente, começamos o teste de carga de nosso aplicativo e notamos que ele ficou sem descritores de arquivo após cerca de 24 horas.

Estamos executando o RHEL 5 em um Dell 1955:

CPU: 2 x Dual Core 2.66GHz 4MB 5150 / 1333FSB RAM: 8GB RAM HDD: 2 x 160GB 2.5" discos rígidos SATA

Verifiquei o limite do descritor de arquivo e ele foi definido em 1024. Considerando que nosso aplicativo poderia ter cerca de 1.000 conexões de entrada, bem como 1.000 conexões de saída, isso parece bastante baixo. Sem mencionar os arquivos reais que precisam ser abertos.

Meu primeiro pensamento foi apenas aumentar o parâmetro ulimit -n em algumas ordens de magnitude e, em seguida, executar novamente o teste, mas eu queria saber as possíveis ramificações de definir essa variável muito alta.

Existem práticas recomendadas para definir isso além de descobrir quantos descritores de arquivo nosso software pode abrir teoricamente?

java linux ulimit max-file-descriptors
  • 5 5 respostas
  • 167514 Views

5 respostas

  • Voted
  1. Best Answer
    sucuri
    2009-08-02T05:08:15+08:002009-08-02T05:08:15+08:00

    Esses limites vieram de uma época em que vários usuários "normais" (não aplicativos) compartilhavam o servidor e precisávamos de maneiras de protegê-los do uso de muitos recursos.

    Eles são muito baixos para servidores de alto desempenho e geralmente os configuramos para um número muito alto. (24k ou mais) Se você precisar de números mais altos, também precisará alterar a opção sysctl file-max (geralmente limitada a 40k no Ubuntu e 70k no rhel).

    Configurando ulimit:

    # ulimit -n 99999
    

    Arquivos sysctl max:

    #sysctl -w fs.file-max=100000
    

    Além disso, e muito importante, você pode precisar verificar se seu aplicativo tem um vazamento de descritor de memória/arquivo. Use lsof para ver tudo o que está aberto para ver se são válidos ou não. Não tente alterar seu sistema para contornar bugs de aplicativos.

    • 78
  2. Ben Lessani
    2013-05-19T04:22:59+08:002013-05-19T04:22:59+08:00

    Você sempre poderia apenas

    cat /proc/sys/fs/file-nr
    

    Durante a situação de 'carga alta' para ver quantos descritores de arquivo estão em uso.

    Quanto ao máximo - só depende do que você está fazendo.

    • 17
  3. MarkR
    2009-08-02T04:27:00+08:002009-08-02T04:27:00+08:00

    Se os descritores de arquivo forem soquetes tcp, etc, você corre o risco de usar uma grande quantidade de memória para os buffers de soquete e outros objetos do kernel; esta memória não será intercambiável.

    Mas caso contrário, não, em princípio, não deve haver problema. Consulte a documentação do kernel para tentar descobrir quanta memória do kernel ele usará e/ou testá-lo.

    Executamos servidores de banco de dados com ~ 10k descritores de arquivo abertos (principalmente em arquivos de disco real) sem um grande problema, mas eles são de 64 bits e têm muita memória ram.

    A configuração ulimit é por processo, mas também há um limite em todo o sistema (32k, acho que por padrão)

    • 8
  4. Grahamux
    2009-08-01T14:53:36+08:002009-08-01T14:53:36+08:00

    Eu pessoalmente não estou ciente de quaisquer práticas recomendadas. É um pouco subjetivo, dependendo da função do sistema.

    Lembre-se de que 1024 que você está vendo é um limite por usuário e não um limite de todo o sistema. Considere quantos aplicativos você executa neste sistema. Este é o único? O usuário que executa este aplicativo está fazendo mais alguma coisa? (IE você tem humanos usando esta conta para fazer login e executar scripts que podem potencialmente fugir?)

    Dado que a caixa está executando apenas este aplicativo e a conta que executa esse aplicativo é apenas para esse fim, não vejo mal em aumentar seu limite como você sugere. Se for uma equipe de desenvolvimento interna, eu pediria a opinião deles. Se for de um fornecedor terceirizado, eles podem ter requisitos ou recomendações específicas.

    • 2
  5. Kyle
    2009-08-01T16:51:04+08:002009-08-01T16:51:04+08:00

    Esta me parece uma daquelas perguntas melhor respondidas com "teste em um ambiente de desenvolvimento". Lembro-me de anos atrás Sun ficou nervoso quando você mexeu com isso, mas não tão nervoso. O limite na época também era 1024, então estou um pouco surpreso ao ver que é o mesmo agora para o Linux, parece que deveria ser maior.

    Achei o link a seguir educacional quando pesquisei respostas para sua pergunta: http://www.netadmintools.com/art295.html

    E este também: https://stackoverflow.com/questions/1212925/on-linux-set-maximum-open-files-to-unlimited-possible

    • 1

relate perguntas

  • Protegendo um novo servidor Ubuntu [fechado]

  • (Soft) RAID 6 no Ubuntu 7.10, devo migrar para 8.10?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Resolver o nome do host do endereço IP

    • 8 respostas
  • Marko Smith

    Como posso classificar a saída du -h por tamanho

    • 30 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    Qual é o utilitário de linha de comando no Windows para fazer uma pesquisa reversa de DNS?

    • 14 respostas
  • Marko Smith

    Como verificar se uma porta está bloqueada em uma máquina Windows?

    • 4 respostas
  • Marko Smith

    Qual porta devo abrir para permitir a área de trabalho remota?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    MikeN No Nginx, como posso reescrever todas as solicitações http para https mantendo o subdomínio? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 Qual é a diferença entre colchetes duplos e simples no bash? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch Como altero a senha da minha chave privada? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt Como funciona a sub-rede IPv4? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve