Ao executar o web-agent sem interface para executar user functions verificamos que o web-agent fica perdido no gerenciador de tarefas do windows, como temos ínumeros agendamentos de tarefas, este web-agent.exe aberto consumindo memória pode impactar o funcionando do servidor!
Exemplo da tarefa:
“C:\Users\user\AppData\Local\Programs\web-agent\web-agent.exe” launch “http://192.168.0.23:8093?E=1212410&P=U_fGeraTXT” --browser=“C:\Program Files (x86)\Google\Chrome\Application\chrome.exe” --headless
Alguém passou por este problema na migração para a versão 12.1.2410?
4 curtidas
Esse comportamento acaba sendo normal, com o tempo geralmente ele mata o processo. Acho que em uma versão mais recente isso melhorou.
Como alternativa pode executar com o seguinte comando que já abre a janela do navegador diretamente sem esse inconveniente:
%ProgramFiles%\Google\Chrome\Application\chrome.exe --app=“http://192.168.0.1:8086/”
2 curtidas
Fiz uns testes rodando as tarefas, os processos web-agent.exe ficaram a semana toda no agendador de tarefas do windows, ou sejá não foram encerrados mesmo na versão mais recente!
Quanto a abrir na janela do navegador, preciso que seja exatamente ao contrário, ou seja sem interface, por isso usamos o parâmetro --headless.
Conclusão: Antes executávamos o smartclient.exe passando os parametros e era encerrado em seguida, agora isso não ocorre com web-agent, o que vai impactar e limitar bastante a nossa migração!
Obrigado
1 curtida
Entendi @giliardl então faz um outro agendamento matando o webagent, infelizmente é o que podemos fazer nesse caso.
taskkill /F /IM web-agent.exe
Para garantir que está matando o processo correto pode colocar ele em outra pasta e renomear o arquivo para um nomes específico, assim sabe que está matando o processo correto.
Outra coisa essa execução precisa mesmo ser feita na máquina do cliente ? não haveria alguma forma de executar isso no servidor? Por exemplo se é feita a leitura de arquivos no cliente, você poderia tentar melhorar o processo para que os arquivos fossem gravados em uma pasta de rede compartilhada com o servidor, assim o server conseguiria ler os dados e essa operação poderia ser feita no lado do servidor e não do cliente.
@cirilorocha quanto a rotina agendada e no caso do exemplo gerando um txt, foi apenas um exemplo, as rotinas estão agendadas em um servidor e são n tarefas.
Já tinha pensando em algo para encerrar web-agent.exe, porém não saberia inicialmente qual derrubar pois pode haver rotinas que leva um minuto e outras que levam 3 horas por exemplo.
Agora com a sua idéia de criar pasta e nome especifico, claro vou ter n nomes, mas achei bem interessante assim conseguiria com outro agendamento encerrar o web-agent correspondente.
Não é o ideal mas é uma alternativa.
Obrigado pela ajuda.
@giliardl se isso já roda no servidor então o ideal é mesmo usar as rotinas do agendador padrão do Protheus. Comentei porque pensei que isso era na estação do usuário por algum motivo, como é no server, o ideal é o agendador mesmo.
https://tdn.totvs.com/display/public/framework/Schedule+Protheus
Sim o ideal é usar o schedule do protheus, o problema que temos alguns problemas no schedule, também limitação de tempo como rodar em 1 em 1 segundo, algumas limitações e problemas usando o tempo real, mas vamos ter que reavaliar e usar, pois é o que temos.
Entendo, nesse caso acho que vale a penas desenvolver uma espécie de schedule customizado, foi que acabei fazendo em um cliente porque também estava tendo problemas com o Schedule. Não sei se esse novo melhorou nesse sentido não cheguei a usar ele ainda para saber.
Fazer essa customização dá mais trabalho, mas dependendo da quantidade de agendamentos pode valer a pena para não mais esses problemas.
Sim pensamos em desenvolver algo, o detalhe que de qualquer forma precisamos executar o web-agent para ter acesso a user function, logo vamos cair a principio no mesmo problema.
A ideia inicial é começar a migrar as tarefas que estamos rodando no schedule do windows para o shedule do protheus uma de cada vez e avaliar o comportamento e caso ocorra problema, tentar mudar até mesmo o processo.
Exemplo: Temos leitura em CLPs rodando de 1 em 1 segundo em vários IPS e endereços diferentes, essa é uma das tarefas que não conseguimos ter um bom comportamento no shedule do protheus, logo teriamos até que repensar no processo com uma controladora única gravando em um BD a parte, algo assim!
Temos muitas costumizações e rotinas bem especificas que rodam constantemente.
Como disse eu já usei um schedule customizado, nada mais é do que uma user function rodando no servidor como um Job, e ela que faz a execução das outras funções conforme os agendamentos que eu cadastrei. Para fazer uma user function rodar no appserver basta definir essas configurações no ini:

1 curtida
Interessante.
Só tem que fazer um schedule customizado do zero completo, mas gostei da sua solução.
giliardl,
Estou passando por uma situação similar a sua com a execução do web-agent em headless, você teve alguma solução para este caso?
Conforme você informou antes realmente o web-agent não para de ser executado no windows, mesmo que a rotina finalize.
Tentei a solução sugerida pelo cirilorocha de colocar o web-agent em uma outras pasta, renomear o executavael, etc, mas todas sem sucesso algum.