Tuning tcp_keepalive_time pour la fuite Node.js

J'ai actuellement une fuite de socket avec mon application Node.js. Ce bug est également affiché ici . J'espère régler cela bientôt. CLOSE_WAIT et FIN_WAIT2 semblent être le problème majeur.

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

Les données suivantes sont récupérées en entrant (alternatives comme) ceci:

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

J'ai lu que vous pouvez résoudre ceci en accordant ces variables:

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

Bien que mon tcp_fin_timeout soit réglé à 60 secondes, mes sockets continuent d'être là pendant plus de 60 secondes. C'est pourquoi je pense que je devrais régler le tcp_keepalive_time .

Il est hébergé sur un server Linux Centos 5 qui exécute également Apache et MySQL.

Puis-je diminuer facilement tcp_keepalive_time à quelque chose comme 1800, ou aura-t-il des impacts négatifs sur Apache, par exemple?

Il existe plusieurs options que vous pouvez autoriser à save sur les ressources du server relatives à la connection. Consultez cette page pour quelques-unes des options et leur description. Consultez également la list des references à la fin de cette page:

 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 

Vous pouvez réduire le tcp_fin_timeout pour dire 20, car cela résolvent un problème qui se pose à la fin d'une durée de vie / exigence de connection. Il en va de même pour le tcp_keepalive_time, si vous le réduisez à une valeur raisonnable et pas trop faible (par exemple, 600, lorsqu'il est utilisé avec tcp_keepalive_intvl et tcp_keepalive_probes).

Il ne devrait pas y avoir d'effets négatifs avec votre server Apache car le trafic HTTP Web typique est très éclatant et de courte durée. À less qu'un user ne télécharge un grand file sur un lien avec une perte de package très élevée, auquel cas, accéder à votre site serait le moindre de leurs soucis.

Si vous venez de lire les pages man et ces liens, cela devrait devenir joli (toute confusion, posez une question ici évidemment!).