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: 36.361 ]

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


Reconfigurando o boot do servidor



Agora copie a nova imagem do kernel para o diretório /boot:

# cp /usr/src/linux/arch/i386/boot/bzImage /boot/

Renomeie esta imagem:

# mv bzImage vmlinuz-custom-2.6.21.5

Agora necessitamos criar um arquivo do initrd para o novo kernel:

# mkinitrd -c -k 2.6.21.5-smp -m ext3 -f ext3 -r /dev/sda2

Atenção para a partição do disco e o tipo de formatação utilizados, no meu caso aponto para a partição /dev/sda2, verifique no servidor em questão quem é a partição root e seu sistema de arquivos, e altere este parâmetro antes de rodar o comando, maiores detalhes:

# vi /boot/README.initrd
e
# man mkinitrd

Faça uma cópia do arquivo initrd gerado:

# cp initrd.gz initrd.gz-cor

Altere o gerenciador de boot que no nosso caso é o lilo:

# vi /etc/lilo.conf

**insira as informações abaixo da linha 35: (atenção não apegue nada neste arquivo apenas inclua as informações abaixo)

image = /boot/vmlinuz-custom-2.6.21.5
root = /dev/sda2 #atenção aqui deverá constar a partição root do seu servidor
label = Linux-Custom
initrd = /boot/initrd.gz-cor
read-only

** altere o campo "timeout = valor" para:

timeout = 150

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

Escreva as novas informações na MBR com o comando:

# lilo

Reinicie o servidor:

# shutdown -r now

Por fim, após o reinício do servidor, confira se o parâmetro dos descritores de arquivos foi alterado.

# ulimit -n

**resultado esperado: 16384

NOTA: Vale lembrar que, no boot, serão apresentadas 2 imagens de kernel nas opções do lilo, caso tenha problemas (kernel panic e outros) com esta nova imagem reinicie o servidor ("na mão") e escolha a opção "Linux" ao invés de "Linux-Custom" quando for solicitado no boot, assim a imagem padrão será carregada novamente e o funcionamento do servidor voltará ao padrão.

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 Nagios em HTTP Seguro (HTTPS)

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

Leitura recomendada

Squid - Bloqueando definitivamente o MSN Messenger e Orkut

Squid balanceado com LVS

Compilando o Squid com autenticação PAM

Limitando download com Squid

FLogSQD - Filtro de log do proxy 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