Problemas de Gravação W/O em Windows Server - Desempenho

17/09/2019

4

Boa tarde,

Estou tendo dificuldade para entender porque um processamento de dados, pode estar tão lento em diversas máquinas com recursos melhores do que o ambiente de desenvolvimento e até ocasionando queda na conexão com o banco de dados.

O Processo:

Gravação de duas tabelas, executadas diretamente com um comando "Insert" e componentes sendo criados em tempo de execução.

procedure GravarTabela(InsertSelect: TStringList);
var
  Proc_Local: TSQLQuery;
begin
  Proc_Local := TSQLQuery.Create(nil);
  Proc_Local.SQLConnection := DataModule.conexao;

  with Proc_Local do
  begin
    Close;

    Sql.Clear;
    SQL.Add(''''INSERT INTO HEADER'''');
    SQL.Add(''''(ID, Number, Value)'''');
    SQL.Add(InsertSelect.Text);

    ExecSQL(True);
  end;

  FreeAndNil(Proc_Local);
end;


Este processo vai gravar em média: 16.000 Registros na tabela Header
Este processo vai gravar em média: 458.000 Registros na tabela Details

Existe uma transação envolvendo as tabela Header e Details.

Todas as leituras e gravações estão sendo processadas utilizando o banco de dados "Firebird 2.1.1" com a conexão TCP na porta 3052.

A Base de dados em questão está na faixa de 2,5 GB.

...................

Computadores em que foi rodado os processos:

Computador: Servidor Principal (Ambiente de desenvolvimento)

Windows Server 2008 R2 Enterprise

Processador Intel Xeon 3220 – 2.4 GHZ
Memória: 4GB
Sistema Operacional 64 Bits
Disco: 50 GB

TEMPO PROCESSAMENTO: 03:08:35
--------------------------------------------------------------------

Computador: Servidor 2 (Ambiente de desenvolvimento aonde rodamos apenas o firewall)

Windows Server 2012
Processador Intel Xeon 1.86 GHZ
Memória: 4GB
Sistema Operacional 64 Bits

TEMPO PROCESSAMENTO: 08:27:14
--------------------------------------------------------------------

***Este é o pior cenário***

Computador: Servidor Cliente (Servidor de um cliente com arquitetura melhor que do ambiente de desenvolvimento)

- Windows Server 2016
- Processador: Intel Xeon CPU E3-1225 V6e 3.30Ghz 331Ghz
- Memória (ram): 8,00 GB
- Sistema: 64 bits, processador com base em x64
- Controladores IDE ATA/ATAPI
-> controlador AHCI SATA padrão
- Disco: 500 GB (NTFS)
-> Usado 167 GB

NÃO TEM RAID

TEMPO PROCESSAMENTO: + de 14 horas ( era o tempo estimado )

Após 1 hora de execução neste Servidor o banco de dados perde a conexão e apresenta o erro abaixo no log do Firebird.

"Firebird terminated abnormally (4294967295)"

Após isso o Guardian restarta o serviço, mas a conexão já foi perdida, somente finalizando a aplicação para liberar.

--------------------------------------------------------------------

Computador: Estação de Desenvolvimento (Ambiente de desenvolvimento do software, computador ligado na rede do servidor)

Windows 10 PRO
Processador Intel Core I7 4790 – 3.60 GHZ
Memória: 16GB
Sistema Operacional 64 Bits
Disco 1TB Western Digital Blue

TEMPO PROCESSAMENTO: 00:58:32
--------------------------------------------------------------------

Computador: Maquina Virtual (Ambiente de desenvolvimento)

Windows 8.1 PRO

Processador Intel Core I5 33.30 – 3.0 GHZ
Memória: 3.5GB
Sistema Operacional 32 Bits
Disco: 50 GB

TEMPO PROCESSAMENTO: 01:58:35
--------------------------------------------------------------------

Lembrando que em todos os teste foram instalado o banco de dados Firebird 2.1.1, com a mesma configuração.

Já realizei testes de performance utilizando as versões mais recente do Firebird 2.1.7, 2.5.2, 3.0.4 (x86 e x64) para corrigir o problema do "FILE_FLAG_RANDOM_ACCESS flag" e não tivemos nenhum desempenho significativo.
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira