Corrigindo a falha "WARNING! Your cache is running out of filedescriptors" - Squid2.7STABLE9 Slackware 12

Há algum tempo tive problemas de desempenho/lentidão nos acessos a internet na empresa onde trabalho. Após analisar, vi que se tratava de uma falha no Squid, que demandava de um limite maior no "filedescriptor" do sistema operacional. Por fim consegui solucionar o problema e resolvi postar aqui um passo a passo de como solucionei tudo.

[ Hits: 35.748 ]

Por: Rafael Bruno de Almeida em 31/08/2010


Recompilando o kernel



Nesta página vou descrever os passos que utilizei para que meu kernel fosse recompilado, vale ressaltar que fiz tudo inicialmente em um ambiente de homologações e que, o que está descrito abaixo foram os passos que no fim recompilaram meu kernel sem problemas com módulos, boot, "kernel panic" etc.

Outra consideração importante é que este artigo não tem como objetivo ensinar métodos de como se recompila ou atualiza ou até mesmo "turbina" um kernel, o foco é inteiramente voltado para a solução do problema com o serviço de cache (SQUID).

Bom, agora, mãos a obra!

Inicialmente altere os parâmetros dos descritores em seus respectivos arquivos:

# vi /usr/include/bits/typesizes.h

**altere a linha: (atenção o "#" deve ser mantido)

DE: #define __FD_SETSIZE            1024

PARA:

#define __FD_SETSIZE            16384

**saia do arquivo e salve: esc + :x!

# vi /usr/src/linux/include/linux/posix_types.h

**altere a linha: (atenção o "#" deve ser mantido)

DE: #define __FD_SETSIZE            1024

PARA:

#define __FD_SETSIZE            16384

**saia do arquivo e salve: esc + :x!

# vi /usr/src/linux/include/linux/posix_types.h

**altere a linha: (atenção o "#" deve ser mantido)

DE: # define INR_OPEN   1024

PARA:

# define INR_OPEN   16384

**saia do arquivo e salve: esc + :x!

Ao terminar, defina o tamanho dos descritores com o comando:

# ulimit -HSn 16384

Acesse o diretório de kernels:

# cd /usr/src/

Faça um backup da pasta original:

# tar -jcf linux.tar.bz2 linux

Acesse o diretório do kernel atual:

# cd /usr/src/linux

Faça um backup da configuração do kernel atual:

# cp .config .config-old

Limpe os arquivos e configurações anteriores:

# make clean
# make mrproper


Retorne com o arquivo de configurações anterior:

# cp .config-old .config

Acesse o utilitário de configurações do kernel:

# make menuconfig

Aqui não vamos fazer nenhuma alteração, afinal, não estamos configurando um novo kernel estamos apenas o recompilando com as opções default já utilizadas.

a Apenas selecione a opção exit e tecle enter:
Linux: Corrigindo a falha: WARNING! Your cache is running out of filedescriptors - Squid2.7STABLE9 Slackware 12
Inicie a recompilação **(demora uns 30minutos).

# make

continuando... (Atenção quanto a possíveis erros)

# make modules

finalizando... (Atenção quanto a possíveis erros)

# make modules_install

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Recompilando o kernel
   3. Reconfigurando o boot do servidor
   4. Reconfigurando o Squid (finalizando)
Outros artigos deste autor

Backup de roteadores Cisco com o TFTP + Pancho - Slackware 13

Implantando o Cacti (gerador de gráficos) em HTTP Seguro (HTTPS)

Implantando o Nagios em HTTP Seguro (HTTPS)

Leitura recomendada

Squid com autenticação e ACLs apartir do grupos do Active Diretory

A verdade sobre as ACLs do Squid

Como fazer o Squid funcionar da maneira mais simples possível no Xubuntu e derivados

Squid autenticando em Win2000/2003 com Debian Etch

Otimização Servidores Linux para Cache usando Squid

  
Comentários
[1] Comentário enviado por paulopastoriza em 31/08/2010 - 08:53h

O filedescriptors ficam ocupados quando o processo do squid não é encerrado corretamente.
Para liberar os filedescriptors só reiniciando o servidor.

Para aumentar os filedescriptors em tempo de execução:
sysctl -w fs.file-max=64000

Para tornar permanente edite o arquivo /etc/sysctl.conf file, e adicione o parâmetro:
fs.file-max = 64000

Obs: Isto para o CentOS e Ubuntu.

[2] Comentário enviado por rafaelalmeida em 31/08/2010 - 10:07h

Bakana...
Só que eu também tinha tentado algo semelhante.. e.. sem sucesso.. pra falar a verdade no meu server este arquivo /etc/sysctl.conf não existe ou não consegui encontra-lo...
O bakana é que outros usuários podem tentar desta forma e se conseguirem com certeza será bem mais fácil que recompilar tudo.. que alias dá um baita de um trabalhão!! =) De qualquer forma fica o artigo aê para os que não conseguirem... Vlw por contribuir!!

[3] Comentário enviado por ---Anonymous--- em 05/09/2010 - 10:29h

Velho, estou tendo tendo o mesmo problema com o Squid, no começo ele acessava a Net de boa, depois ficou lento a bagaça.
Tentei achar o esse caminho /usr/include/bits/typesizes.h mas o diretorio bits com o tupesizes.h não existe.
Tentei do jeito do PAULO PASTORIZA, man também não consegui.
Infelismente.

[4] Comentário enviado por ton.work em 06/09/2010 - 19:35h

O caminho:
"/usr/src/linux/include/linux/posix_types.h"
"define INR_OPEN 1024"

é o mesmo que,

"/usr/src/linux/include/linux/posix_types.h"
"define __FD_SETSIZE 1024"

mas não encontrei o "define INR_OPEN 16384"

[5] Comentário enviado por rafaelalmeida em 08/09/2010 - 11:19h

Opa,

Na verdade o artigo contem um erro, segue abaixo os arquivos a serem alterados:

vi /usr/include/bits/typesizes.h

DE: #define __FD_SETSIZE 1024

PARA:

#define __FD_SETSIZE 16384

vi /usr/src/linux/include/linux/posix_types.h

DE: #define __FD_SETSIZE 1024

PARA:

#define __FD_SETSIZE 16384

vi /usr/src/linux/include/linux/fs.h

DE: # define INR_OPEN 1024

PARA:

# define INR_OPEN 16384

Repeti o mesmo arquivo para duas trocas, foi um descuido, acima segue os arquivos corretos.

Lembrando: (atenção o "#" deve ser mantido).

[6] Comentário enviado por KnowX em 08/09/2010 - 12:40h

rafaelalmeida, como vai, tudo bem?

Não lembro se este comando funciona no Slackware 12, porém tente e observe o resultado.

Você colocou os FDs em 16384, o comando abaixo aumenta os FDs para 32768 sem a necessidade de recompilação do Kernel, porém não sei se a performance do Servidor é a mesma.

#ulimit -HSn 32768

confira os FDs com o comando:

#ulimit -n

Um abraço a todos.

[7] Comentário enviado por rafaelalmeida em 08/09/2010 - 12:55h

Opa! tudo certo KnowX!

Esse comando funciona sim! porém eu tinha que manter o Putty aberto pra funcionar, se eu fechasse o Putty ele voltava o valor pra 1024.. Daí tivemos de ficar uma semana com o Putty aberto aqui para que o valor não se alterasse novamente, até que fiz as ações citadas no artigo e funcionou legal (até hoje rs.).. No mais obrigado por contribuir!!

[8] Comentário enviado por romalmeida em 06/09/2011 - 09:32h

Prezado Rafael Almeida

Fiz essas alterações que para acertar de 1024 para 16384.

Mas a minha dúvida, eu não tenho que descomentar a linha retirando a #?

Abs,


[9] Comentário enviado por rafaelalmeida em 06/09/2011 - 09:40h

Opa!

Então, quando fiz mantive todos os "comentários" sim, e tudo funcionou desta forma. Valeu!

[10] Comentário enviado por nerdzinbr em 06/06/2016 - 02:43h

E pra quem tem ele instalado no windows server, qual o procedimento ?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts