Problemas de Gravação W/O em Windows Server - Desempenho
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.
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.
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.
Timuio
Curtidas 0