Vscode-ng-language-service: Processos zumbis ao longo do dia

Criado em 23 dez. 2016  ·  28Comentários  ·  Fonte: angular/vscode-ng-language-service

Então descobri que, ao longo do dia, meu angular-cli fica cada vez mais lento e me perguntei o que era até verificar meu Monitor de atividades no OSX.
Percebi alguns processos zumbis no final do dia. A versão anterior deste serviço de linguagem me deu entre 2 a 5 processos zumbis e acho que com a versão mais recente, pareço terminar com 1 restante. Adicionei alguns detalhes / capturas de tela a esse problema sobre eles: https://github.com/Microsoft/vscode/issues/17156

Há alguma maneira de ajudar a obter mais informações sobre eles?

bug

Comentários muito úteis

Nosso plano atual é compartilhar um servidor com TypeScript em vez de usar nosso próprio serviço. Isso deve cuidar desse problema. Vou manter este problema atualizado com o progresso dessa transição.

Todos 28 comentários

Eu tenho o mesmo problema

eu tenho esse processo que está matando meu lap top (o calor e o ventilador nunca param?)

Nosso plano atual é compartilhar um servidor com TypeScript em vez de usar nosso próprio serviço. Isso deve cuidar desse problema. Vou manter este problema atualizado com o progresso dessa transição.

obrigado @chuckjaz e outro pelo incrível trabalho neste plug-in

São minhas ferramentas favoritas depois de sair do "Silverlight XAML e visual studio"

Esse também é o problema de que o processo está atingindo 100% do uso da CPU?

Eu acredito que eles estão relacionados.

Existem planos para resolver isso no futuro próximo. Ter que encerrar manualmente esses processos pode ser irritante.
Eu realmente não quero parecer impaciente. Apenas perguntando por interesse.

Agora que o 4.0.0 está quase acabando e eu tenho mais tempo para me concentrar nisso, meu plano é acabar com isso de uma forma ou de outra.

Esta extensão ainda está aumentando minha CPU auxiliar de código para 100%.

Eu realmente preciso de uma maneira de reproduzir isso. Você pode tentar restringir um projeto ou me enviar um log da janela de saída?

@bpasero @jrieken Um de vocês poderia nos ajudar nisso? Ou adicione alguém à conversa. Qual é a melhor maneira de depurar isso? Quais comandos posso usar?

Uma coisa que poderíamos investigar é pelo menos desligar qualquer processo que seja filho do processo principal do VS Code no desligamento para evitar que processos zumbis fiquem pendurados. Também costumo ver os processos do TS-Server pendurados sem ter nenhuma instância do VS Code aberta.

Não tenho mais certeza se isso está relacionado a processos zumbis. A extensão está apenas consumindo minha CPU em 100%. Eu reativei a extensão novamente agora e espero até que aconteça novamente. Gostaria de saber o que posso fazer para depurar isso.

Certo, quanto à depuração de processos de alta CPU além do processo principal e do renderizador, acho que não temos solução. Eu sei que @jrieken habilitou a criação de perfil de CPU para nossos processos principal e renderizador e talvez pudéssemos expandir isso para extensões também. No entanto, o desafio é que o processo de criação de perfil geralmente não é nem mesmo o processo do host de extensão, mas o servidor de linguagem bifurcado a partir daí, então o código de criação de perfil teria que ser adicionado a cada extensão. Seria melhor se houvesse alguma maneira de criar o perfil de um processo remotamente, sem exigir alterações de código.

screen shot 2017-04-07 at 14 20 29

96.1 sam  9649  /Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper.app/Contents/MacOS/Code Helper /Users/sam/.vscode/extensions/Angular.ng-template-0.1.2/node_modules/vscode-languageclient/lib/utils/electronForkStart /Users/sam/.vscode/extensions/Angular.ng-template-0.1.2/server/server.js --node-ipc

Agora também habilitei o log do TSServer, conforme sugerido neste tópico https://github.com/Microsoft/vscode/issues/20260.

@chuckjaz Percebi que isso sempre acontece quando eu uso o VS Code, deixe-o aberto e coloque meu mac para dormir. Depois de um tempo, quando eu desbloquear meu mac novamente e começar a usar o Code, o processo começa a usar 100% da CPU.

@mjbvz Você tem uma maneira de depurar / testar isso? Agora tenho um arquivo tsserver.log da pilha.

Info 0    Binding...
Info 1    request: {"seq":0,"type":"request","command":"configure","arguments":{"hostInfo":"vscode"}}
Info 2    Host information vscode
Info 3    response: {"seq":0,"type":"response","command":"configure","request_seq":0,"success":true}
Perf 4    0::configure: async elapsed time (in milliseconds) 1.8224
Info 5    request: {"seq":1,"type":"request","command":"compilerOptionsForInferredProjects","arguments":{"options":{"module":"CommonJS","target":"ES6","allowSyntheticDefaultImports":true,"allowNonTsExtensions":true,"allowJs":true,"jsx":"Preserve"}}}
Perf 6    1::compilerOptionsForInferredProjects: elapsed time (in milliseconds) 0.7151
Info 7    response: {"seq":0,"type":"response","command":"compilerOptionsForInferredProjects","request_seq":1,"success":true,"body":true}
Info 8    request: {"seq":2,"type":"request","command":"getSupportedCodeFixes","arguments":null}
Perf 9    2::getSupportedCodeFixes: elapsed time (in milliseconds) 0.2105
Info 10   response: {"seq":0,"type":"response","command":"getSupportedCodeFixes","request_seq":2,"success":true,"body":["2304","2339","2377","2420","2503","2515","2653","2663","2686","2689","6133","6138","17009"]}
Info 11   request: {"seq":3,"type":"request","command":"getSupportedCodeFixes","arguments":null}
Perf 12   3::getSupportedCodeFixes: elapsed time (in milliseconds) 0.4345
Info 13   response: {"seq":0,"type":"response","command":"getSupportedCodeFixes","request_seq":3,"success":true,"body":["2304","2339","2377","2420","2503","2515","2653","2663","2686","2689","6133","6138","17009"]}
Info 14   request: {"seq":4,"type":"request","command":"open","arguments":{"file":"/Users/sam/Projects/opensource/dev-time/test.js","fileContent":"import test from 'ava';\nimport moment from 'moment-timezone';\nimport Conf from 'conf';\nimport m from './';\n\nconst conf = new Conf();\n\ntest.beforeEach(() => {\n\tconf.clear();\n});\n\ntest('error', t => {\n\tt.throws(m(), 'Expected a user');\n});\n\ntest('result', async t => {\n\tconst time = await m('SamVerschueren');\n\n\tt.is(conf.get('SamVerschueren'), moment().tz('Europe/Brussels').format());\n\tt.is(time, moment().tz('Europe/Brussels').format());\n});\n","scriptKindName":"JS"}}
Info 15   Search path: /Users/sam/Projects/opensource/dev-time
Info 16   No config files found.
Info 17   Add watcher for: /Users/sam/Projects/opensource/dev-time
Info 18   Add watcher for: /Users/sam/Projects/opensource
Info 19   Add watcher for: /Users/sam/Projects
Info 20   Add watcher for: /Users/sam
Info 21   Add watcher for: /Users
Info 22   Scheduling throttled operation: {"projectName":"/dev/null/inferredProject1*","fileNames":["/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/lib.es6.d.ts","/Users/sam/Projects/opensource/dev-time/index.js","/Users/sam/Projects/opensource/dev-time/test.js"],"compilerOptions":{"module":1,"target":2,"allowSyntheticDefaultImports":true,"allowNonTsExtensions":true,"allowJs":true,"jsx":1,"noEmitForJsFiles":true,"maxNodeModuleJsDepth":2},"typeAcquisition":{"enable":true,"include":[],"exclude":[]},"unresolvedImports":["ava","child_process","crypto","events","events","execa","fs","http","latest-push","net","readline","stream","tls"],"projectRootPath":"","kind":"discover"}
Info 23   Project '/dev/null/inferredProject1*' (Inferred) 0
/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/lib.es6.d.ts
/Users/sam/Library/Caches/typescript/node_modules/moment/moment.d.ts
/Users/sam/Library/Caches/typescript/node_modules/@types/moment-timezone/index.d.ts
/Users/sam/Library/Caches/typescript/node_modules/@types/conf/index.d.ts
/Users/sam/Library/Caches/typescript/node_modules/@types/tempfile/index.d.ts
/Users/sam/Library/Caches/typescript/node_modules/@types/node/index.d.ts
/Users/sam/Library/Caches/typescript/node_modules/@types/minimatch/index.d.ts
/Users/sam/Library/Caches/typescript/node_modules/@types/glob/index.d.ts
/Users/sam/Library/Caches/typescript/node_modules/@types/del/index.d.ts
/Users/sam/Projects/opensource/dev-time/index.js
/Users/sam/Projects/opensource/dev-time/test.js

-----------------------------------------------
Open files: 
/Users/sam/Projects/opensource/dev-time/test.js
Info 24   event: {"seq":0,"type":"event","event":"configFileDiag","body":{"triggerFile":"/Users/sam/Projects/opensource/dev-time/test.js","diagnostics":[]}}
Perf 25   4::open: async elapsed time (in milliseconds) 961.5712
Info 26   Sending request: {"projectName":"/dev/null/inferredProject1*","fileNames":["/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/lib.es6.d.ts","/Users/sam/Projects/opensource/dev-time/index.js","/Users/sam/Projects/opensource/dev-time/test.js"],"compilerOptions":{"module":1,"target":2,"allowSyntheticDefaultImports":true,"allowNonTsExtensions":true,"allowJs":true,"jsx":1,"noEmitForJsFiles":true,"maxNodeModuleJsDepth":2},"typeAcquisition":{"enable":true,"include":[],"exclude":[]},"unresolvedImports":["ava","child_process","crypto","events","events","execa","fs","http","latest-push","net","readline","stream","tls"],"projectRootPath":"","kind":"discover"}
Info 27   Received response: {"projectName":"/dev/null/inferredProject1*","typeAcquisition":{"enable":true,"include":[],"exclude":[]},"compilerOptions":{"module":1,"target":2,"allowSyntheticDefaultImports":true,"allowNonTsExtensions":true,"allowJs":true,"jsx":1,"noEmitForJsFiles":true,"maxNodeModuleJsDepth":2},"typings":["/Users/sam/Library/Caches/typescript/node_modules/@types/conf/index.d.ts","/Users/sam/Library/Caches/typescript/node_modules/@types/del/index.d.ts","/Users/sam/Library/Caches/typescript/node_modules/@types/moment-timezone/index.d.ts","/Users/sam/Library/Caches/typescript/node_modules/@types/tempfile/index.d.ts","/Users/sam/Library/Caches/typescript/node_modules/@types/node/index.d.ts"],"unresolvedImports":["ava","child_process","crypto","events","events","execa","fs","http","latest-push","net","readline","stream","tls"],"kind":"action::set"}
Info 28   request: {"seq":5,"type":"request","command":"quickinfo","arguments":{"file":"/Users/sam/Projects/opensource/dev-time/test.js","line":13,"offset":16}}
Perf 29   5::quickinfo: elapsed time (in milliseconds) 3.0767
Info 30   response: {"seq":0,"type":"response","command":"quickinfo","request_seq":5,"success":false,"message":"No content available."}

Não parece que está fazendo muito.

@kieferrm também viu isso recentemente. Estamos tentando localizar um repo confiável.

@SamVerschueren você pode verificar se o seu problema é reproduzido com esta extensão desativada? Parece que Angular.ng-template-0.1.2/server/server.js é o culpado aqui, não tsserver diretamente

É definitivamente a extensão aqui. Não experimente nenhum problema ao desativá-lo. Várias pessoas reclamam sobre isso no Twitter, bem como sobre o aumento da CPU para 100% após a instalação desta extensão. Mas este é realmente um must have para todos os desenvolvedores Angular. É por isso que seria muito bom se pudéssemos rastrear a causa raiz disso.

Essas linhas são suspeitas:

Info 17 Add watcher for: /Users/sam/Projects/opensource/dev-time Info 18 Add watcher for: /Users/sam/Projects/opensource Info 19 Add watcher for: /Users/sam/Projects Info 20 Add watcher for: /Users/sam Info 21 Add watcher for: /Users

Eu pensei que tinha matado o código que adicionou isso, mas não devo. Vou lançar outra versão neste fim de semana que garante que isso nunca aconteça.

Essas também chamaram minha atenção. Deixe-me saber se posso ajudá-lo com a execução do teste.

vendo isso também na minha máquina

Não sei se está relacionado, mas também recebi alguns relatórios de travamentos do meu servidor de linguagem Vue e uso de CPU / memória anormalmente alto.

Parece que algumas falhas no servidor de linguagem deixam os processos zumbis suspensos. Não sei os detalhes ainda, no entanto.

Notei a mesma coisa para go também. Este parece ser um problema geral com extensões de vscode .

Minha abordagem até agora foi garantir que meus processos cheguem a zero de CPU com o tempo. Pelo menos os zumbis estão apenas ocupando espaço de troca.

Também estou passando a usar o ser um plugin para o serviço de linguagem typescript, em vez de vscode diretamente, agora que o 2.3 foi lançado. Isso significa que meus zumbis não são piores que os de um texto datilografado.

Gostaria de saber se há alguma atualização aqui quanto ao progresso de @angular/language-service como um plug-in TS em vez de VSC. Não consigo encontrar nenhuma menção a isso e o rastreador de problemas encerrou o problema original para ele: https://github.com/angular/angular/issues/7482

Eu continuo vendo commits / trabalhos sendo feitos para o serviço de linguagem e cheguei à conclusão de que ainda não está na CLI e sua instalação não é mencionada em lugar nenhum :)

Eu acho que ainda há trabalho a ser feito antes de podermos substituir o plugin VSC com o abaixo, certo?

"plugins": [
  {
    "name": "@angular/language-service"
  }
]

Encontramos um problema que exigia uma mudança de protocolo entre o VS Code e o TypeScript. A estimativa atual da Microsoft, uma vez que esta mudança vai rolar no início de setembro.

O serviço de linguagem Angular agora pode ser usado como um plugin VSC, um plugin TS ou um servidor de linguagem autônomo. Fechamento; abra um novo problema se você estiver enfrentando isso.

Este problema foi bloqueado automaticamente devido à inatividade.
Registre um novo problema se você estiver encontrando um problema semelhante ou relacionado.

Leia mais sobre nossa política de bloqueio automático de conversas .

_Esta ação foi executada automaticamente por um bot._

Esta página foi útil?
0 / 5 - 0 avaliações