Como depurar problemas de CPU do nó + Socket.io

5

Estamos executando um servidor Node Socket.io com Express 3. O servidor é monitorado usando Forever . O serviço está funcionando bem, mas o CPU cresce ao longo do dia, até atingir 90% + e, em seguida, cai de repente para ~ 20%, conforme mostrado nos gráficos abaixo. Eu acredito que a queda é causada por Forever reiniciar o aplicativo.

O que eu gostaria de saber é:

  • Quais são os fatores típicos que podem fazer com que um aplicativo Node.js se comporte assim?
  • Quais ferramentas / métodos estão disponíveis para depurar vazamentos de memória / CPU hogging em aplicativos de nó?

Acho que poderia ser algo com o Socket.io não limpando recursos depois que os usuários se desconectarem, embora os documentos digam que o Socket.io gerencie isso automaticamente.

Qualquer ajuda seria muito apreciada, esta questão está tornando o gerenciamento do nosso servidor muito difícil. Por favor, deixe-me saber se esta questão seria mais adequada no StackOverflow.

Update: Depois de mais pesquisas, parece que a CPU não se correlaciona diretamente com o número de conexões. Nossa massa crítica parece estar em torno de ~ 1500 conexões simultâneas divididas da seguinte forma:

  • xhr-polling: 767
  • websocket: 692
  • jsonppolling: 80

Às vezes, podemos estar com 100% de CPU com apenas 500 conexões, outras vezes com 1500 conexões. Estou ciente de que a taxa de mensagens enviadas tem um grande impacto, mas a taxa é bastante consistente.

    
por SteveEdson 12.04.2013 / 11:18

1 resposta

2

Eu tenho exatamente o mesmo problema, triste que ninguém tenha sugestões para nós ...

aqui está o meu problema explicado node.js, mongodb, redis, na degradação do desempenho do ubuntu na produção, a RAM é livre, a CPU 100%

    
por 03.05.2013 / 12:54