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.
Introdução
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.
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.
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.