CONTEÚDO

01. VISÃO GERAL

Neste documento serão citadas as melhorias que estão sendo feitas no funcionamento do Job, com o intuito de melhorar a sua performance.  

Veja mais sobre a Configuração N CamadasConfiguração do Jobserver na Linha RM.

02. ATUALIZAÇÃO DA GJOBSERVER

Na verão 12.1.31, foi feito um ajuste no tempo de escrita nessa tabela.

Essa tabela possui informações dos servidores de job em atividade. Alguns de seus dados são obtidos pelo arquivo de alias.dat e outros o sistema atualiza de forma dinâmica, de acordo com o ambiente.

Pode-se consultar:

Buscando melhorar a performance, o campo gjobserver.numjobs não mostrará mais quantos jobs estão sendo executados. E o campo gjobserver.fulljobs será preenchido com a regra:


Para saber o numJobs em tempo de execução é necessário executar a seguinte consulta SQL:

WITH CTE_GJOBXEXECUCAO (NUMJOBS, SERVIDOR) AS

(

SELECT COUNT(GJOBXEXECUCAO.STATUS) AS NUMJOBS,

GJOBXEXECUCAO.SERVIDOR

FROM GJOBXEXECUCAO

WHERE (GJOBXEXECUCAO.STATUS IN (0,1)

OR GJOBXEXECUCAO.STATUS IS NULL)

AND PRIORITY <> 1

GROUP BY GJOBXEXECUCAO.SERVIDOR

)

SELECT GJOBSERVER.NOMESERVIDOR,

GJOBSERVER.DATAULTATIV,

GJOBSERVER.MAXJOBS,

GJOBSERVER.TEMPOPOOL,

GJOBSERVER.CONTROLADOR,

GJOBSERVER.FULLJOBS,

CTE_GJOBXEXECUCAO.NUMJOBS

FROM GJOBSERVER

LEFT JOIN CTE_GJOBXEXECUCAO

ON (GJOBSERVER.NOMESERVIDOR = CTE_GJOBXEXECUCAO.SERVIDOR)



0 - quando a quantidade de jobs em execução por aquele servidor forem igual a zero ou menor que a quantidade máxima que aquele server puder executar (maxjobs).

1 - quando o servidor estiver executando a quantidade máxima de jobs configurada para ele (maxjobs).

A escrita no campo gjobserver.dataultativ também foi alterada.

Antes este campo era atualizado sempre que era feita uma verificação da fila de jobs pelo sistema. Essa verificação é feita de acordo com o valor configurado em gjobserver.tempopool.

Após a implementação da melhoria, o campo gjobserver.dataultativ será atualizado após 5 vezes o tempo configurado em gjobserver.tempopool.

03. TRATAMENTO PARA FINALIZAÇÃO DO JOB QUANDO O HOST QUE ESTÁ EXECUTANDO-O NÃO RESPONDE MAIS 

Na verão 12.1.31, foi feita uma melhoria de recovery do job. 

Hoje um job em execução têm afinidade com o servidor que ele está em execução. A melhoria implementada afeta um cenário onde garantimos que se esse servidor cair durante a execução de um job e não retornar mais, outro servidor finalizará o processo com status de falha.

Caso o job não tenha recorrência, o controlador irá atualizar o processo que estava em execução com status de falha. 

Se o job for recorrente, o controlador além de finalizar o processo com status de falha, irá criar o agendamento da próxima execução, considerando as mesmas regras da recorrência programada no job.

O processo acima ocorrerá quando o próprio host da execução inicial do job não conseguir finalizá-lo antes de cair e após o controlador remover esse host da GJOBSERVER.

Em ambiente 3 camadas, em cenários onde o host cair, se algum jobRunner estiver executando um job, esse jobRunner vai tentar finalizar a sua execução antes de se matar. Para evitar que a melhoria citada acima finalize esse job que está em execução e que continua comunicando com o banco, foi feito com que o jobrunner assuma o papel de atualizar a GJOBSERVER.DATAULTATIV e GJOBSERVER.FULLJOBS = 1, até finalizar o seu job. Assim, será adiado que o controlador remova esse host da GJOBSERVER e finalize seus jobs em execução, e com o campo fulljobs = 1 esse host não receberá mais jobs para serem executados.  

04. ARMAZENAMENTO DO HISTÓRICO DE EXECUÇÃO DE JOBS NA TABELA GJOBXEXECUCAOHST

A partir da versão 12.1.31, o histórico de execução de jobs ficará armazenado na tabela GJOBXEXECUCAOHST.

Com o intuito de melhorar a performance do sistema, ao que se refere a jobs, foi criada a tabela GJOBXEXECUCAOHST. Em versões anteriores, quaisquer jobs finalizados, agendados ou em execução eram armazenados na tabela GJOBXEXECUCAO.

O que mudou:

A migração dos dados é feita via banco de dados e não é gerado um job para isso.
Além disso, foi criada a view GJOBXEXECUCAOVIEW para listar todos os jobs, da tabela GJOBXEXECUCAO e GJOBXEXECUCAOHST.

Em ambiente 3 camadas = false, os registros serão migrados para a GJOBXEXECUCAOHST pelo atualizador.


Novidades do atualizador da 12.1.31: 


05. LIMPEZA DE JOB SERVERS DA TABELA GKNOWNJOBSERVER

A partir da versão 12.1.2306, foi adicionado um mecanismo para realizar a limpeza de JobServers da tabela GKNOWNJOBSERVER, mantendo a saúde e sanitização.

Para que um JobServer seja removido, será seguida a seguinte regra: