Squid ficando sem descritores de arquivos no Ubuntu

4

Estou executando o Squid 2.7 no Ubuntu 10.04 64bits. Eu tive o problema de o Squid ficar sem descritores de arquivos, com o seguinte erro aparecendo em /var/log/squid/cache.log:

WARNING! Your cache is running out of filedescriptors

Eu verifiquei com:

squidclient mgr:info | grep 'file descri'

e mostrou que eu tinha apenas 1024 descritores de arquivos disponíveis.

Eu alterei o /etc/security/limits.conf, adicionando isso no final:

* soft nofile 32768
* hard nofile 32768
proxy           soft    nofile          32768
proxy           hard    nofile          32768

Adicionou isto ao /etc/squid/squid.conf:

max_filedescriptors 32768

Também mudou o / etc / default / squid:

SQUID_MAXFD=32768

Nada estava dando certo. No final eu editei /etc/init.d/squid para adicionar "ulimit -n 32768":

#!/bin/sh -e
# upstart-job
#
# Symlink target for initscripts that have been converted to Upstart.

set -e
ulimit -n 32768
<... snipped  ...>

Isso funcionou! :)

Eu tive que fazer tudo isso sob o estresse de um servidor de Squid de produção ao vivo sendo incrivelmente lento, então estou certo de que este NÃO é o jeito certo de fazê-lo.

Mas qual é o caminho certo para fazer isso?

    
por UrkoM 28.10.2010 / 07:17

3 respostas

2

Você tem que adicionar a linha ulimit no script init do squid, assim como aumentar max_filedescriptors no squid.conf. Esses são os dois passos essenciais. Você não precisa mais compilar o squid da fonte para aumentar esse limite. Isso era algo que você tinha que fazer com versões muito antigas do squid.

    
por 28.10.2010 / 09:47
0

Eu tive o mesmo problema antes. Não consegui aumentar o número de descritores de arquivos de quid.

Além do que você fez, eu configurei o squid usando as seguintes opções de configuração:

./configure --prefix=/usr/local/squid --enable-start-stop-daemon --with-filedescriptors=65536 --enable-storeio=ufs,aufs --with-aufs-threads=10

A parte importante para o caso é:

--with-filedescriptors=65536

Depois de fazer isso e reiniciar o squid, obtive o valor máximo de descritores de arquivos: 65536.

Claro, isso requer que o squid seja instalado a partir da fonte e não do comando:

apt-get install squid
    
por 28.10.2010 / 09:22
0

/etc/init.d/squid é um link simbólico para / lib / init / upstart-job, então sua sugestão original aumenta o limite para todos os serviços iniciantes.

Concordo que a pergunta / solução original aumenta o limite do descritor de arquivo, então, obrigado por isso. Idealmente, uma solução que não aumentasse os descritores de arquivos seria mais agradável.

    
por 10.02.2012 / 20:15