Ajustando o tcp_keepalive_time para vazamento do Node.js

2

Atualmente estou tendo um vazamento de soquete com o meu aplicativo Node.js. Esse bug também é postado aqui . Espero consertar isso em breve. CLOSE_WAIT e FIN_WAIT2 parecem ser o maior problema.

Connections:    1662
ESTABLISHED:    238
CLOSE_WAIT:     770
FIN_WAIT1:      4
FIN_WAIT2:      632

Os seguintes dados são recuperados inserindo (alternativas como) isto:

netstat -anp | grep ${node_pid} | wc -l

Eu li que você pode resolver isso ajustando essas variáveis:

net.ipv4.tcp_fin_timeout    ( = 60 )
net.ipv4.tcp_keepalive_time ( = 7200 )

Embora meu tcp_fin_timeout esteja configurado para 60 segundos, meus soquetes permanecem por mais de 60 segundos. É por isso que acho que devo ajustar o tcp_keepalive_time .

Ele está hospedado em um servidor Linux Centos 5 que também executa o Apache e o MySQL.

Posso diminuir facilmente tcp_keepalive_time para algo como 1800, ou isso terá impactos negativos no Apache, por exemplo?

    
por Martin 19.03.2013 / 12:18

1 resposta

1

Existem várias opções que você pode ajustar para economizar recursos do servidor relacionados à conexão. Veja esta página para algumas das opções e suas descrições. Além disso, veja a lista de referências no final dessa página:

man 7 ip
man 7 tcp
http://www.faqs.org/docs/securing/chap6sec70.html
http://man7.org/linux/man-pages/man7/ip.7.html
http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/usingkeepalive.html 

Você pode reduzir o tcp_fin_timeout para 20, já que isso está resolvendo um problema que surge no final de um tempo de vida / requisito de conexões. O mesmo acontece com o tcp_keepalive_time, se você reduzi-lo a um valor sensato e não muito baixo (digamos 600, quando usado com tcp_keepalive_intvl e tcp_keepalive_probes).

Não deve haver nenhum efeito negativo com o seu servidor Apache, pois o tráfego HTTP típico da Web é muito intermitente e de curta duração. A menos que um usuário esteja baixando um arquivo grande em um link com perda de pacotes muito alta, nesse caso, acessar seu site seria a menor das suas preocupações.

Se você acabou de ler as páginas do manual e os links, deve ficar bonito (qualquer confusão, poste uma pergunta aqui obviamente!).

    
por 07.05.2013 / 15:46