Fórum Porque meu SocketServer (3 Camadas) trava? #296617

22/09/2005

0

Olá, tenho um servidor usando o SocketServer da borland, e quando tem muitos processos de dados, (muitos incluir por exemplo), ele simplesmente trava todas as conexoes.. o que pode ser?

Estou usando COM, e todas as portas estao abertas no windows 2k Server.


Desde ja agradeco


Titanius

Titanius

Responder

Posts

22/09/2005

Nandolh

Por isso eu parei de utilizar :lol:


Responder

Gostei + 0

22/09/2005

Nandolh

Ah! Ia me esquecendo... Enfrentei o mesmo problema e não consegui encontrar nenhuma solução.

Se alguém souber de algo, agradeceria muito.


Responder

Gostei + 0

22/09/2005

Titanius

:D

Estou quase desistindo também, mas pra qual vc mudou?


Responder

Gostei + 0

22/09/2005

Nandolh

Abandonei...

:cry:


Responder

Gostei + 0

22/09/2005

Marioguedes

Olá... não entendi por completo o problema mas o uso de Threads é uma opção a meu enteder...


Responder

Gostei + 0

22/09/2005

Thomaz_prg

No Socket Server tem uma opção chamada Thread Cache Size... aumente esse valor (é que o valor que vem por Default é 10, e muitas vezes não é o suficiente).


Responder

Gostei + 0

23/09/2005

Titanius

Olá... não entendi por completo o problema mas o uso de Threads é uma opção a meu enteder...


O problema é o seguinte: Eu tenho um servidor COM, e eu uso o SocketServer (SocketConnection) para conectar no servidor, visto que não consegui fazer funcionar com o DCOM e nem com o WebConnection. Quando algum cliente está fazendo algum processamento grande, como por exemplo Refaz Acumulados e algum outro cliente tenta conectar, o ScktSrvR.exe (Socket Server da Borland), simplesmente trava!! e [b:320ded28ac]todos[/b:320ded28ac] os clientes travam, eu tenho que reiniciar o servidor COM, e reiniciar o scktsrvr.exe para voltar a funcionar... Isso acontece com 2 usuários... ou seja, muito estranho.

Abandonei... ---------- No Socket Server tem uma opção chamada Thread Cache Size... aumente esse valor (é que o valor que vem por Default é 10, e muitas vezes não é o suficiente).


Eu aumentei o Cache pra 500000 e nada, :D.. Voce abandonou, mas está usando algo? Qual tecnologia?



[]s


Responder

Gostei + 0

23/09/2005

Emerson Nascimento

isso depende muito da configuração do seu servidor COM+

Call Synchronization = Required
Transaction Model = Requires a transaction

Além disso, crie sua classe COM+ com os parâmetros ciSingleInstance e tmApartment pra ver se resolve.

Se as suas configurações não estiverem dessa forma e você as alterar, será necessário desinstalar o COM+ e reinstalá-lo. apenas substituir a DLL não dá certo.


Responder

Gostei + 0

23/09/2005

Emerson Nascimento

agora uma outra pergunta: a rotina do Refaz Acumulados está no cliente?
deveria ser uma Stored Procedure no servidor de banco de dados, que seria disparada pelo servidor COM+ em função da solicitação do client.
asim a conexão não ficaria comprometida de forma alguma, pois o cliente solicitaria (o que não ´pesa´ na aplicação) e o servidor dispararia a stored procedure, o que manteria o processo totalmente no servidor, sem mais utilizar a porta de comunicação ou os serviços do socket.


Responder

Gostei + 0

23/09/2005

Titanius

Olá emerson.en

A rotina do refaz foi só um exemplo. Pra testar eu fiz o seguinte, criei uma tabela de testes, e no cliente, coloquei um FOR pra incluir alguns dados, ou seja, simulando que alguns usuários estariam inserindo os dados, e com isso o outro cliente na hora que conecta ele trava.

Bem, o meu servidor está

Call Synchronization = Required
Transaction Model = Requires a transaction
tmApartment
cMultiInstance

jah tentei com
tmBoth
cMultiInstance

e
tmBoth
cSingleInstance

e o RDM está como Pooled


Será que é configuração errada minha?

[]s


Responder

Gostei + 0

23/09/2005

Emerson Nascimento

eu não tive uma boa experiência com os objetos ´Pooled´.

aqui criamos os objetos com ciMultiInstance e tmSingle, com Call Synchornization=Required e Transacion Model=Does not support transactions, e ainda com o object pooling desmarcado.
foi feito um programa para estressar o sistema. esse programa tinha um for..next que inseria 2.000 registros e foi executado simultâneamente em 6 micros. o sistema sequer ficou lento.

tente com essas configurações e veja se resolve seu problema.


Responder

Gostei + 0

23/09/2005

Titanius

Ok amigo, agora está funcionando, um pouco mais lento, parece que ele executa somente um de cada vez, sei lá, mas o que me preocupou foi isso:
Transacion Model=Does not support transactions

no livro que tenho, fala que isso aí diz: não há suporte para transação.

e como funcionaria então? não teria algum problema com várias máquinas ligadas ao mesmo tempo não?

E mais uma coisa... onde eu tenho master-detail quando eu chamo ele dá: falha catastrófica.


[]s


Responder

Gostei + 0

23/09/2005

Emerson Nascimento

pelo que eu sei, com [i:c2239a7805]Does not support transactions[/i:c2239a7805] as transações deverão ser explícitas (controladas por você).
se estiver com qualquer outro flag que suporte transações. as mesmas serão implícitas, controladas pelo próprio objeto COM+.

quanto ao ´Falha catastrófica´ no master-detail não sei te dizer. utilizo nested tables.


Responder

Gostei + 0

23/09/2005

Denis

só um comentário.

Tbm tive problemas com socket server. Mas isto aconteceu em uma máquina que tem windows 2000. Então transferi a aplicação para uma outra com windows XP e não tive mais problemas.
Será que é algum Bug do 2000 ? Estranho isso né ?


Responder

Gostei + 0

23/09/2005

Titanius

pelo que eu sei, com [i:8db91040e5]Does not support transactions[/i:8db91040e5] as transações deverão ser explícitas (controladas por você). se estiver com qualquer outro flag que suporte transações. as mesmas serão implícitas, controladas pelo próprio objeto COM+. quanto ao ´Falha catastrófica´ no master-detail não sei te dizer. utilizo nested tables.


É eu uso o ClientDataSet mesmo... tem alguma diferenca? e sobre Windows, procede?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar