Forum
See question

WebService V10 desenvolvido provoca lentidão na gravação de documentos no Primavera   

80 views
1
0

Desenvolvemos um webservice para integrar com o Primavera que realiza muitos pedidos de 15 em 15 minutos.

O cliente reporta muita lentidão na gravação de documentos no Primavera V10 quando tínhamos o mesmo processo na V9 e não existia nenhum problema.

Deve ser feito algum processo diferente na V10 ?

Faça login para poder traduzir
V10
Marked as spam
Created 1 year and 3 months ago ngelafrazo
n
ngelafrazo Iniciante
Comments
Bom dia, O vosso Webservice é uma extensão da WebAPI, ou usa a API standard? Nós também migramos um conetor da V9 para a V10, que usa a API. Os tempos de gravação de documentos de venda são similares, mas persiste um problema com a connection pool ao SQL, que causa bloqueios ao fim de uma hora. Verifiquem os tempos de gravação: são normais no inicio, e vão ficando degradados ao longo do tempo?!
1 year and 3 months ago
emiliosusavila
    O nosso Webservice usa a API Standard. Quando reiniciamos o IIS os tempos de gravação ficam normais mas vão ficando degradados ao longo do tempo. Parece que os processos vão ficando acumulados no IIS.
    1 year and 3 months ago
    ngelafrazo
      2 answers
      1
      Private answer

      Verifica também se a base de dados esté me modo autoclose a true, deve estar a false.
      Outra dica será não realizar muitas aberturas de empresas entre processos, por exemplo apenas deve-se abrir a empresa uma vez processar tudo nessa empresa até que existe ligação e só realizar o fecho de empresa quando necessário.
      Validar também se o SQL tem deadlocks.

      Faça login para poder traduzir
      Marked as spam
      Created 1 year and 2 months ago brunosilvamarques
        2
        Private answer

        Olá @ngelafrazo,

        Parece-me que estão a ter o mesmo problema que eu.

        Verifiquem o número de ligações do WebService à base de dados e ao Priempre. Por exemplo, usem a seguinte query na instancia do SQL:

        SELECT 
            DB_NAME(dbid) as DBName, 
            COUNT(dbid) as NumberOfConnections,
            loginame as LoginName,
            status,hostname,PROGRAM_NAME,s.hostprocess
            
        FROM
            sys.sysprocesses (nolock) s
        WHERE 
            dbid > 0 
            and db_name(dbid)='PRIDEMO'
            and loginame='sa'
        GROUP BY 
            dbid, loginame,status,hostname,PROGRAM_NAME,s.hostprocess

        nota: pode ser preciso adaptar a clausula "where" ao vosso caso

        Se o numero de ligações chegar às 100, ocorre um bloqueio, porque a connection pool fica cheia e não permite mais ligações.
        As ligações mais antigas vão sendo terminadas devido a um timeout, e enquanto não terminam, não se conseguem criar novas ligações e ficam suspensas até o timeout da ligação (ex: 120 seg.).
        Isto é a causa da lentidão, e por vezes erros.

        É preciso verificar também as ligações ao PRIEMPRE, porque ao abrirem a plataforma, a pool desta base de dados enche mais rapidamente.

        Confirmem se são os mesmos sintomas?!

        Faça login para poder traduzir
        Marked as spam
        Created 1 year and 3 months ago emiliosusavila
        emiliosusavila Responsiveness Member