Uma resposta útil do StackOverflow:
Eu tenho uma configuração em que o squid fica na frente de um servidor java e age como um proxy reverso. Recentemente eu carreguei o site testado e se eu disparar 100 threads nele, cada um fazendo um pedido usando jmeter eu começo a receber erros na minha ferramenta de teste de carga como 'sem rota para host' mesmo que a ferramenta de teste de carga eo servidor estejam no mesma máquina.
se eu executar o seguinte comando, onde a porta 82 é a porta em que meu servidor squid está sendo executado:
netstat -ann | grep 82 | wc -l
eu recebo 22000 ou algo assim e a maioria deles está em TIMED_WAIT. Eu estou pensando que talvez o grande número de sockets no estado TIMED_WAIT esteja passando fome pela caixa de recursos.
Uma resposta útil do StackOverflow:
Existem vários limites diferentes que podem afetar a operação do seu proxy da Web. Como sysadmin1138 mencionou, as conexões TCP são uma delas.
Outra, como Kyle conseguiu postar antes de mim, são os descritores de arquivos. O padrão do SQUID, pelo menos com o 2.6, é 1024. Para aumentar este limite, você tem que recompilar o --with-maxfd
. Mesmo depois de recompilado com FD mais alto, o ulimit
estará em vigor para o usuário que inicia o squid. Por exemplo, para aumentar o limite de recursos para 8192, execute isto antes de iniciar o squid:
ulimit -HSn 8192
O padrão do Linux é bem alto no nível do kernel atualmente, então você provavelmente não precisará sintonizar fora do SQUID para o FD. Se você fornecer saída de registro, provavelmente indicará o problema exato e poderemos fornecer recomendações mais detalhadas.
Podem ser muitos arquivos abertos Com o unix, "tudo é um arquivo", isso inclui sockets. Você precisa aumentar o máximo de arquivos abertos com ulimit
para o usuário ou possivelmente também no kernel ( /proc/sys/fs/file-max
). Você também pode jogar com o tempo gasto em TIME_WAIT com /proc/sys/net/ipv4/tcp_fin_timeout
Se você estiver usando o Squid 2.7, você pode definir o número de fds disponíveis sem recompilar; link