- Este tópico contém 10 respostas, 6 vozes e foi atualizado pela última vez 18 anos, 1 mês atrás por Ishii.
-
AutorPosts
-
17 de novembro de 2006 às 12:25 am #77343BarataParticipante
Tenho uma aplicação que faz o processamento no oracle, porém está levando em torno de 50 minutos, notei que durante este processamento o consumo da CPD varia somente de 15 a 20 %, Teria alguma forma de almentar este uso da CPU para diminuir o tempo de processamento.
SO Windows 2003 Server, 2 Processador Xeon 3.2, 3.0Giga de Memória.Obrigado,
João Carlos Carvalho.
17 de novembro de 2006 às 12:56 am #77346Marcio68AlmeidaParticipanteVocê pode controlar (limitar) o uso da CPU, se não há limitação, o banco vai usar o que tiver disponível, se você notou que está usando pouca CPU, então provavelmetne há um gargalo em outro ponto, veja memória e disco, que são os principais vilões do banco.
17 de novembro de 2006 às 1:52 am #77352BarataParticipanteEste provável gargalo de disco ou memória, seria as configurações do Oracle sobre eles? E quais seria o prováveis parametros para configurar? Uso somente um banco com um tablespace de 900MB e usado 480MB, SGA Total de 892MB com com 71% de cache de buffer e 26% de pool compartilhado, pga_aggregate_target=287MB,processes=150.
Obrigado,
João Carlos Carvalho.
17 de novembro de 2006 às 5:49 am #77357drumondParticipantePergunta, sua aplicacao eh Web, Duas camadas, tres camadas ???
17 de novembro de 2006 às 2:08 pm #77365Marcio68AlmeidaParticipanteBom, depende de como está escrito o teu processo, se você faz muito IO (gravação e leitura), isso degrada por causa do disco.
Se você coloca tudo em memória, pode degradar, uma opção é o uso de cursores.
Se você tem outros aplicativos rodando na mesma máquina, tipo apache, IAS, etc, eles concorrem com a memória.
Pode ser que seu disco esteja muito fragmentado e/ou fazendo swap.
Pode ser que a sua memória esteja muito fragmentada obrigando o swap…
Meu conselho é que você destrinche o teu processo e verifique cada passo, o que ele faz e quanto tempo demora, vai certamente encontrar o gargalo… 😀17 de novembro de 2006 às 9:26 pm #77399BarataParticipanteDrumond, é um sistema para desktop(exe), feito em 2 camadas.
Marcio: Não posso destrinchar o processo pois esta aplicação é de terceiros. Acompando nos gráficos gerados durante o processamento percebo muito pouca utilização de I/O e quase tudo no consumo da CPU, Não tenho nenhum outro aplicativo rodando consumindo memória ou CPU, o estranho é que o consumo do CPU durante o processamento sempre fica entre 15 a 20% sem qualquer pico, inclusive é um computador novo somente com função de banco, o pior é que prometi que esse processamento melhoraria com esta nova máquina… Estou começando achar que é este 2003 Server….
Ou temos alguma outra opção?Obrigado,
João Carlos Carvalho.23 de novembro de 2006 às 3:29 pm #77447HelioParticipantePara aumentar o uso de CPU ,
altere sua query para uso de processamento paralelo.23 de novembro de 2006 às 3:42 pm #77449Marcio68AlmeidaParticipanteBom, outra alternativa é aumentar a prioridade de processamento, se bem que não creio que isso ajude alguma coisa, já que tem CPU livre e o Oracle não está buscando…
Quanto ao I/O, a única alternativa, já que o produto é de terceiros, é aumentar a memória, quanto ele está usando de memória e quanto tem ???
O Windows 2003 é bom, mas nada como um bom Linux…
Mas certametne conversar com o fornecedor sobre seu problema continua sendo prioridade…28 de novembro de 2006 às 3:42 am #77477chduarteParticipanteAcredito que a melhor forma de trabalhar com este tipo de situacao é o Resource Manager. Voce consegue dar niveis de CPU diferentes para cada grupo consumidor.
Se nao for possivel, o ideal é vc trabalhar nas queries que estao rodando para ver se dar para criar algum indice para melhor a performance.Grande []
4 de dezembro de 2006 às 8:05 pm #77578BarataParticipanteBem, acho que o problema pode ser este, estou mandando este processamento de um client, no client o uso da CPU fica 100% e no servidor do BD 15% a 20%, a utilização da rede é insignificante(2%) durante o processamento. E dependendo da capacidade da máquina client o tempo é superior ou inferior. Pergunto no Oracle é comum este comportamento para aplicação Desktop? Ou é meu fornecedor da aplicação que desenvolveu este com a metodologia Espaguetti(código tudo misturado)? E se tem alguma coisa que eu possa fazer que não dependa do fornecedor?
Obrigado,
4 de dezembro de 2006 às 9:52 pm #77583IshiiParticipanteBarata,
Pela sua descrição tenho algumas informações que pode ter ajudar (ou não…). O processamento em torno de 15% da CPU se deve ao fato dos Processos Oracle ficarem sempre ativos no W2003 (PMON,SMON, LGWR etc) e o conjunto deles é que deve estar consumindo a CPU isso é bastante diferente no Linux/UNIX, por sua aplicação ser 2 camadas e o tempo de resposta ser relativo a capacidade da máquina Cliente, posso lhe afirmar que o Oracle está sendo utilizado apenas como Repositório de Dados sendo que as Regras de Negócios e provalvemente o “pesado” da Programação estar no Executável Compilado do seu Fornecedor. Esperimente executar o programa direto no Servidor W2003, provavelmente o tempo e o processamento será bem melhor. Como sugestão utilize o Stat Packs da Oracle para uma análise, mas acho que será inevitável uma conversa com o seu Fornecedor. E respondendo a sua Pergunta: No Oracle, como em qualquer Banco de Dados relacional, se a programação não utilizar os Recursos do Banco de Linguagem (PL, Transact etc) para aplicações em 2 camadas a performance sempre deixará a desejar…
[]s e Boa sorte! -
AutorPosts
- Você deve fazer login para responder a este tópico.