Aumento dinamico de listeners e memória heap (v1 e v2 evolution)
Bem-vindo!
- [X] Sim, pesquisei solicitações semelhantes no GitHub e não encontrei nenhum.
Qual tipo de recurso?
Outro
Qual a motivação para a solicitação?
Então, estava tentando aumentar a memoria heap e os listeners via CLI ao usar docker compose file, porém por algum motivo não persiste na execução do container, então creio que vou ter que mudar algo no codigo para poder efetuar essa mudança. Sei que na v2 já tem variável de ambiente para isso, mas ainda não posso fazer a transição com o que estou usando em produção pois nos meus testes da v2 ainda não está estável o suficiente para deixar em produção. Meu pedido seria de incluir duas variaveis de ambiente em que dentro do código do evo da v1 fosse possível setar o defaultMaxListeners na hora de chamar o emitter para poder permitir usar mais de 10 instancias no evo v1. Assim como na v2 já possui algo do genero.
Exemplos de Uso
Passar mais duas variaveis de ambiente: NODE_MEMORY (default é 2048) e NODE_MAX_LISTENERS (default é 10), para poder ser usado para incluir mais instancias e não crashar o evolution ou perder mensagens.
Como o recurso deve ser desenvolvido?
Outra coisa que seria interessante é que após definido o node memory e o node max listeners, conforme fosse criando instancias, ele fosse permitindo ja que ele consome o numero semelhante de listeners pra cada instancia, Então quando chegasse no limite de node max listeners, ele bloqueasse a criação de novas instancias por questão de recursos. Como também ao chegar no limite de memoria.
Notas Adicionais
Coloquei dinamico pelo fato de quem usa variaveis de ambiente, é mais prático mudar
Cheguei a alterar o maxListeners do event emitter para 60 (minha instalação tem 50 instâncias, cerca de 30 conectadas) porém aparentemente continua a usar somente 1 listener para os principais eventos. Fiz um ajuste no fetchInstances para mostrar o uso dos listeners como podem ver na print acima.
descobri que é possivel aumentar a memoria heap apenas passando uma variavel de ambiente chamada NODE_OPTIONS. Com ela é possivel passar "--max-old-space-size=4096" (2048 é o default), assim aumentei de 1,5GB de memoria heap para 4GB. Então faltaria apenas alterar dentro do codigo do evolution, aonde é criado o events do emitter e passar o maxDefaultListener para a quantidade definida em uma variavel de ambiente.
up para v2 @DavidsonGomes