Trabalho em um ambiente onde há um alto índice de acessos à internet, com uma demanda cada vez mais alta, vi que certo dia o desempenho nos acessos a internet cai muito, tais acessos ficaram muito lentos praticamente inviabilizando a navegação.
Iniciei as análises e depois de muito procurar me deparei com o seguinte erro no arquivo de logs do cache (/var/log/squid/cache.log):
"WARNING! Your cache is running out of filedescriptors"
Sem saber do que se tratava iniciei uma busca na web visando solucionar o problema, e depois de muita pesquisa descobri que este erro era proveniente ao limite no tamanho dos descritores de arquivo do sistema operacional que, em uma instalação padrão do Slackware 12 é de 1024 (para verificar o tamanho destes descritores rode o comando "ulimit -n").
NOTA: Uma descrição completa do que vem a ser um "descritor de arquivos" pode ser encontrada em:
http://en.wikipedia.org/wiki/File_descriptor - Acesso em <18 AGO 2010>.
Por fim, vi que para solucionar o problema seria necessário aumentar esse limite e que a única forma (pelo menos que eu encontrei, e que efetivamente funcionou) de que isto fosse realizado, seria fazer uma recompilação do meu kernel - versão linux-2.6.21.5.
[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!