Soap Delphi7 FireBird
Pessoal,
Desenvolvi uma aplicação utilizando Soap e FireBird.
Minha aplicação acessa uma dll no servidor q faz as requisições ao Banco q está em um Servidor Web. E cada vez q a aplicação da um Post o ´Number of Attachments´ aumenta.
E quando chega a um numero elevado eu perco a conexão(provavelmente, excede o limite).
Localmente tb aumenta o Number of Attachements, mas, funciona perfeitamente(pois, naum possuo limites d conexão)
Alguem já passou por algo parecido?
Number of Attachments é o nº de conexões simultâneas???
Oq q eu poderia fazer para reduzir o Number of Attachments
Desenvolvi uma aplicação utilizando Soap e FireBird.
Minha aplicação acessa uma dll no servidor q faz as requisições ao Banco q está em um Servidor Web. E cada vez q a aplicação da um Post o ´Number of Attachments´ aumenta.
E quando chega a um numero elevado eu perco a conexão(provavelmente, excede o limite).
Localmente tb aumenta o Number of Attachements, mas, funciona perfeitamente(pois, naum possuo limites d conexão)
Alguem já passou por algo parecido?
Number of Attachments é o nº de conexões simultâneas???
Oq q eu poderia fazer para reduzir o Number of Attachments
Rspinheiro
Curtidas 0
Respostas
Rspinheiro
18/04/2007
sobe
GOSTEI 0
Jujan
18/04/2007
Experimente criar um outro webservice para diminuir a carga em cima do seu webservice, é interessante entender que o webservice é uma página de acesso a dados e funções através de um protocolo Http e com isso tem as limitações do protocolo de internet, se está pesado demais vc pode balancear revendo a sua rede(muitíssimo complicado) ou então montando novos webservices paar dividir o peso e revendo suas consultas.
GOSTEI 0
Rspinheiro
18/04/2007
jujan,
muito obrigado pela resposta... mas creio q o meu problema está na quantidade de conexões no meu webservices, pois cada vez q eu dou um post é criada uma nova conexão.
eu preciso de alguma maneira encerar essa conexao logo após q dou o Post... Mas, naum sei como faze-lo.
Não sei se issu eh um problema do Soap ou do Sistema do Servidor(windows 2003)
grato,
Ricardo Pinheiro
muito obrigado pela resposta... mas creio q o meu problema está na quantidade de conexões no meu webservices, pois cada vez q eu dou um post é criada uma nova conexão.
eu preciso de alguma maneira encerar essa conexao logo após q dou o Post... Mas, naum sei como faze-lo.
Não sei se issu eh um problema do Soap ou do Sistema do Servidor(windows 2003)
grato,
Ricardo Pinheiro
GOSTEI 0
Jujan
18/04/2007
Cara se for conexão vc tem q ver se está sendo fechada a conexão toda vez que vc deixa de usar os objetos, no webservice no SoapModule tem o evento onDestroy coloca para fechar a conexão do SqlConnection lá.
GOSTEI 0
Rspinheiro
18/04/2007
Jujan,
Testei sua dica, mas, meu webservice eh uma dll que esta sempre online, por issu, eu naum passo pelo evendo OnDestroy.
Estou tentando fechar minha conexao de qualquer jeito, mas, naum estou conseguindo.
vc tem outra idéia???
Testei sua dica, mas, meu webservice eh uma dll que esta sempre online, por issu, eu naum passo pelo evendo OnDestroy.
Estou tentando fechar minha conexao de qualquer jeito, mas, naum estou conseguindo.
vc tem outra idéia???
GOSTEI 0
Alex Maia
18/04/2007
Amigo,
Você já tentou usar o seu servidor como sendo um exe ao invés de uma dll? Comecei a desenvolver um sistema em 3 camadas usando SOAP tendo como servidor uma dll e tinha muitas dificuldades. Depois de um tempo mudei para um exe e não tive mais problemas. Até a performance do sistema ficou melhor com o exe. T+
Você já tentou usar o seu servidor como sendo um exe ao invés de uma dll? Comecei a desenvolver um sistema em 3 camadas usando SOAP tendo como servidor uma dll e tinha muitas dificuldades. Depois de um tempo mudei para um exe e não tive mais problemas. Até a performance do sistema ficou melhor com o exe. T+
GOSTEI 0
Rspinheiro
18/04/2007
só que para issu eu preciso alterar toda a estrutura...
Antes quero lutar mais um pouco.
Grato,
Ricardo Pinheiro.
Antes quero lutar mais um pouco.
Grato,
Ricardo Pinheiro.
GOSTEI 0
Brunolspp
18/04/2007
galera
SOAP
não foi desenvolvido para ser servidor de aplicaçao e conter regras de negocio pesadas e acesso a dados.
para se ter perfromance vc precisa aplicar conceito de multicamadas na aplicação, usar um container rapido e seguro como o Borland Socket Server(BSS).
a dica do colega com relação a usar CGI ao inves de ISAPI realmente e melhor.
Fazer pooling tb ajuda.
Mas se vc rpecisa de perfromance nesta estrutura vc não conseguirá, migre para BSS, com ele vc faz a interface q quiser, win32, IW, SOAP, etc...
no meu link de downloads gratuitos(abaixo da minha assinatura) vc encontra varios exemplso de aplicaçoes de alta performance com multicamadas e datasnap.
alem de ter um grupo de usuarios especifico a mais de 2 somente sobre este assunto: nddv@yahoogrupos.com.br
SOAP
não foi desenvolvido para ser servidor de aplicaçao e conter regras de negocio pesadas e acesso a dados.
para se ter perfromance vc precisa aplicar conceito de multicamadas na aplicação, usar um container rapido e seguro como o Borland Socket Server(BSS).
a dica do colega com relação a usar CGI ao inves de ISAPI realmente e melhor.
Fazer pooling tb ajuda.
Mas se vc rpecisa de perfromance nesta estrutura vc não conseguirá, migre para BSS, com ele vc faz a interface q quiser, win32, IW, SOAP, etc...
no meu link de downloads gratuitos(abaixo da minha assinatura) vc encontra varios exemplso de aplicaçoes de alta performance com multicamadas e datasnap.
alem de ter um grupo de usuarios especifico a mais de 2 somente sobre este assunto: nddv@yahoogrupos.com.br
GOSTEI 0
Jujan
18/04/2007
Quote[só que para issu eu preciso alterar toda a estrutura... ]
Para mudar a estrutura vc terá que copiar seus objetos de conexões q vc utiliza no seu ISAPI e colar na nova aplicação CGI que vc criou.
Quando vc compila a sua aplicação servidora seria interessante verificar se vc está compilando ela com o SQLConnection aberto se estiver feche e compile ela.Outra observação quantos SQLConnection vc colocou na sua aplicação e quantos usuários acessam ela.Desenvolver um modelo de pool também é um boa idéia como o Bruno falou, mais não mude direto para o BSS que é uma boa solução, pois se sua aplicação não trabalhar em rede local vc pode ter problemas com configuração de portas e acesso, pois essa é a base do BSS trabalhar com Socket através de portas já o WebService o acesso é via Http com o protocolo SOAP de transporte, para redes web é o melhor caminho na minha opinião.
Para mudar a estrutura vc terá que copiar seus objetos de conexões q vc utiliza no seu ISAPI e colar na nova aplicação CGI que vc criou.
Quando vc compila a sua aplicação servidora seria interessante verificar se vc está compilando ela com o SQLConnection aberto se estiver feche e compile ela.Outra observação quantos SQLConnection vc colocou na sua aplicação e quantos usuários acessam ela.Desenvolver um modelo de pool também é um boa idéia como o Bruno falou, mais não mude direto para o BSS que é uma boa solução, pois se sua aplicação não trabalhar em rede local vc pode ter problemas com configuração de portas e acesso, pois essa é a base do BSS trabalhar com Socket através de portas já o WebService o acesso é via Http com o protocolo SOAP de transporte, para redes web é o melhor caminho na minha opinião.
GOSTEI 0
Brunolspp
18/04/2007
cara..
BSS e mto mais escalavel q SOAP e mais rapido, leve e seguro.
ele e mto melhor pra rede local ou pra Web ja q vc pode definir em q porta, e naum precisa de trabalhar com nenhum servico sobre IP como e o caso do soap.
vc trabalha sobre IP diretamente..
e a porta so te dar maior mobilidade e opcao de configuracao..se o problema for porta, poem ele na 8080 por exemplo.
realmente essa questao da porta não é o motivo de não usar BSS, pelo contrario, é o motivo de usar :D
BSS e mto mais escalavel q SOAP e mais rapido, leve e seguro.
ele e mto melhor pra rede local ou pra Web ja q vc pode definir em q porta, e naum precisa de trabalhar com nenhum servico sobre IP como e o caso do soap.
vc trabalha sobre IP diretamente..
e a porta so te dar maior mobilidade e opcao de configuracao..se o problema for porta, poem ele na 8080 por exemplo.
realmente essa questao da porta não é o motivo de não usar BSS, pelo contrario, é o motivo de usar :D
GOSTEI 0
Jujan
18/04/2007
Caríssimo Bruno entendo a sua prioridade pelo BSS que tbm acho muito bom, porém estou somente tentando ajudar o colega na tecnologia que ele escolheu e por seus motivos que tal ao invés de ficarmos discutindo qual tecnologia gostamos mais, vamos tentar ajudá-lo com nossas experiências na tecnologia que ele escolheu, pois eu utilizo webservice em aplicações de altas demandas e tenho perfomace satisfatória dos meu aplicativos, assim como sei que vc tbm já desenvolveu coisas na tecnologia e sabe que é bom tbm.
Porque vamos ser lógicos senão fosse bom a Microsoft e CodeGear não colocaria em seus produtos tal tecnologia e a IBM não incentivaria o uso da tecnologia.
Porque vamos ser lógicos senão fosse bom a Microsoft e CodeGear não colocaria em seus produtos tal tecnologia e a IBM não incentivaria o uso da tecnologia.
GOSTEI 0
Brunolspp
18/04/2007
naum estopu falando pra naum usar soap, so estou esclarecendo q soap foi desenvolvido(no consorcio q envolve, SUN, IBM, Borland, Microsoft) para interfaces e naum com o objetivo de container de processamento pesado e acesso a dados, algyumas companhias(como a borland) q incluiram possibilidades disso na estrutura.. e naum falo do BSS pq gosto e nem disse q naum se pode fazer algo performatico com SOAP, ate pq uso SOAP e mto.
so procurei esclarecer pontos de utilizaçAo e alpicacao tecnologica q geralmente naum sao abordados. e contribuir com o pouco de experiencia q tenho pra q tds possamos nos ajudar.
me desculpe alguma coisa, me perdoe se vc entendeu q estava impondo uma solucao, apneas estava expondo o q sei com a intencao de ajudar e naum de puxar sardinha pra lado nenhum.
tamus juntos e misturados pra poder crescer, conta comigo para o q precisar. e mais uma vez, desculpa qq coisa diferente q expressei a não ser esclarecer e ajudar
so procurei esclarecer pontos de utilizaçAo e alpicacao tecnologica q geralmente naum sao abordados. e contribuir com o pouco de experiencia q tenho pra q tds possamos nos ajudar.
me desculpe alguma coisa, me perdoe se vc entendeu q estava impondo uma solucao, apneas estava expondo o q sei com a intencao de ajudar e naum de puxar sardinha pra lado nenhum.
tamus juntos e misturados pra poder crescer, conta comigo para o q precisar. e mais uma vez, desculpa qq coisa diferente q expressei a não ser esclarecer e ajudar
GOSTEI 0
Rspinheiro
18/04/2007
jujan,
eu já mudei para CGI, mudei para Apache, mudei até o objeto de conexão... e continuo com o mesmo problema, quando vou converir as conexões ainda estão abertas(como vc pod ver abaixo) mesmo apos ter fechado minha aplicação....
C:\>netstat -an | find ´:3050´
TCP 0.0.0.0:3050 0.0.0.0:0 LISTENING
TCP 127.0.0.1:1131 127.0.0.1:3050 TIME_WAIT
TCP 127.0.0.1:1132 127.0.0.1:3050 TIME_WAIT
TCP 127.0.0.1:3050 127.0.0.1:1133 TIME_WAIT
TCP 127.0.0.1:3050 127.0.0.1:1134 TIME_WAIT
TCP 127.0.0.1:3050 127.0.0.1:1135 TIME_WAIT
Cada conexão eh dada após um open do meu cds...
se puder me ajudar ficarei muito grato,
[]s,
Ricardo Pinheiro
eu já mudei para CGI, mudei para Apache, mudei até o objeto de conexão... e continuo com o mesmo problema, quando vou converir as conexões ainda estão abertas(como vc pod ver abaixo) mesmo apos ter fechado minha aplicação....
C:\>netstat -an | find ´:3050´
TCP 0.0.0.0:3050 0.0.0.0:0 LISTENING
TCP 127.0.0.1:1131 127.0.0.1:3050 TIME_WAIT
TCP 127.0.0.1:1132 127.0.0.1:3050 TIME_WAIT
TCP 127.0.0.1:3050 127.0.0.1:1133 TIME_WAIT
TCP 127.0.0.1:3050 127.0.0.1:1134 TIME_WAIT
TCP 127.0.0.1:3050 127.0.0.1:1135 TIME_WAIT
Cada conexão eh dada após um open do meu cds...
se puder me ajudar ficarei muito grato,
[]s,
Ricardo Pinheiro
GOSTEI 0
Brunolspp
18/04/2007
tanto soap qto isapi vao trazer este problema.
vc precisa configurar no evento newsession para conectar e closesession para fechar a conexao.
no BSS nao teria este problema.
mas faz isso q resolve sua vda pro enquanto
vc precisa configurar no evento newsession para conectar e closesession para fechar a conexao.
no BSS nao teria este problema.
mas faz isso q resolve sua vda pro enquanto
GOSTEI 0
Rspinheiro
18/04/2007
´vc precisa configurar no evento newsession para conectar e closesession para fechar a conexao.´
Como eu poderia fazer para configurar estas sesões???
Grato,
Ricardo Pinheiro.
Como eu poderia fazer para configurar estas sesões???
Grato,
Ricardo Pinheiro.
GOSTEI 0
Brunolspp
18/04/2007
na sua aplicacao vc tem esses eventos, vc precisa olhar de acordo com o tipo q vc esta desenvolvendo, geralmente no webmodulo vc tem esses eventos nos dispatchers
GOSTEI 0
Rspinheiro
18/04/2007
na sua aplicacao vc tem esses eventos, vc precisa olhar de acordo com o tipo q vc esta desenvolvendo, geralmente no webmodulo vc tem esses eventos nos dispatchers
Estou gerenciando as Sessoes ´na mão´, antes de instaciar o objeto dou um Enter e apos dou um Leave...
depois q eu abro acesso Provider dou um Close no meu obj d conexão.
mas... nada disso adiantou, continua gerando conexões!!!
vc teria mais aluma dica pra me dar???
grato,
Ricardo Pinheiro
GOSTEI 0
Brunolspp
18/04/2007
q tipo de projeto esta desenvlvendo e qual versao do Delphi?
ISAPI ou CGI?
ISAPI ou CGI?
GOSTEI 0
Rspinheiro
18/04/2007
ISAPI, Delphi7 e FireBird 1.5
GOSTEI 0
Jax
18/04/2007
Para de Sofrer e usa BSS
A transição nem é tão dificil assim...
A transição nem é tão dificil assim...
GOSTEI 0
Rspinheiro
18/04/2007
Voces poderiam enviar para o meu e-mail algum material mais detalhado sobre o BSS???
rspinheiro@gmail.com
Ps: Bruno, eu já fiz o download do seu material!!!
Grato,
Ricardo Pinheiro.
rspinheiro@gmail.com
Ps: Bruno, eu já fiz o download do seu material!!!
Grato,
Ricardo Pinheiro.
GOSTEI 0
Armando.boza
18/04/2007
amigo, vou falar mas não sei se vc ja fez isso.
na programação use o try finally ex:
use sempre try finally para garantir que sua conexão vai ser realmente fechada.
eu uso assim e não tive problema ainda.
na programação use o try finally ex:
dm.soapconnection.open; try dm.ClientDataSet1.Post; finally dm.soapconnection.close; end;
use sempre try finally para garantir que sua conexão vai ser realmente fechada.
eu uso assim e não tive problema ainda.
GOSTEI 0
Rspinheiro
18/04/2007
já tentei sim!!!
dei o Close tanto na aplicação desktop qto no servidor(dll)...
[]s,
Ricardo Pinheiro
dei o Close tanto na aplicação desktop qto no servidor(dll)...
[]s,
Ricardo Pinheiro
GOSTEI 0
Brunolspp
18/04/2007
Material mais especifico sobre BSS somente no meu treinamento :(
ainda nao deu pra fazer as video aulas, se tiver interesse no treianmento mande uma mensagem em PVT e conversamos melhor.
mas qq duvida pode perguntar, sera um prazer ser util de alguma forma.
ainda nao deu pra fazer as video aulas, se tiver interesse no treianmento mande uma mensagem em PVT e conversamos melhor.
mas qq duvida pode perguntar, sera um prazer ser util de alguma forma.
GOSTEI 0
Armando.boza
18/04/2007
Material mais especifico sobre BSS somente no meu treinamento :(
ainda nao deu pra fazer as video aulas, se tiver interesse no treianmento mande uma mensagem em PVT e conversamos melhor.
mas qq duvida pode perguntar, sera um prazer ser util de alguma forma.
Aproveitando a deixa, comecei a pesquisar sobre BSS e notei que não há muita coisa na internet, vi no seu site de download os materiais e baixei todos mas infelizmente não consegui compilar.
onde posso achar mais sobre o BSS, queria fazer uns testes, saber como funciona, pois não tenho nem ideia.
GOSTEI 0
Brunolspp
18/04/2007
entao
os exemplos a maioria esta em Delphi 2006 e 2007, mas podem ser compilados em Delphi 7, basta remover o sqlconnection do dbexpress e colocar de novo, os exemplos estao amplamente funcionais.
Tem muita coisa no HELP do Delphi e tem um grupo com mais de 400 usuarios desenvolvendo sobre esta tecnologia, o que pode lhe ajudar muito: nddv@yahoogrupos.com.br
e no mais sera um prazer lhe ajudar
os exemplos a maioria esta em Delphi 2006 e 2007, mas podem ser compilados em Delphi 7, basta remover o sqlconnection do dbexpress e colocar de novo, os exemplos estao amplamente funcionais.
Tem muita coisa no HELP do Delphi e tem um grupo com mais de 400 usuarios desenvolvendo sobre esta tecnologia, o que pode lhe ajudar muito: nddv@yahoogrupos.com.br
e no mais sera um prazer lhe ajudar
GOSTEI 0