Ubuntu Server 10.04.1 x86
Eu tenho uma máquina com um serviço HTTP FCGI por trás do nginx, que atende a muitas solicitações HTTP pequenas para vários clientes diferentes. (Cerca de 230 solicitações por segundo nos horários de pico, o tamanho médio da resposta com cabeçalhos é de 650 bytes, vários milhões de clientes diferentes por dia.)
Como resultado, tenho muitos soquetes pendurados em TIME_WAIT (o gráfico é capturado com as configurações TCP abaixo):
Eu gostaria de reduzir o número de soquetes.
O que posso fazer além disso?
$ cat / proc / sys / net / ipv4 / tcp_fin_timeout 1 $ cat / proc / sys / net / ipv4 / tcp_tw_recycle 1 $ cat / proc / sys / net / ipv4 / tcp_tw_reuse 1
Atualização: alguns detalhes sobre o layout de serviço real na máquina:
cliente ----- Soquete TCP -> nginx (proxy reverso do balanceador de carga) ----- Soquete TCP -> nginx (trabalhador) --domain-socket -> fcgi-software --single-persistent-TCP-socket -> Redis --single-persistent-TCP-socket -> MySQL (outra máquina)
Provavelmente eu deveria alternar o balanceador de carga -> a conexão do trabalhador com os soquetes do domínio, mas o problema sobre os soquetes TIME_WAIT permaneceria - planejo adicionar um segundo trabalhador em uma máquina separada em breve. Nesse caso, não será possível usar soquetes de domínio.