none
Web Service ficando lento RRS feed

  • Pergunta

  • Criei um simulador para criar vários Threads e, cada um, enviar um XML a cada 10 segundos para um método do WebService.

    o problema é que quando existe mais de 6500 Threads o webservice começa a ficar lento e começa a criar uma fila de envio.

    Método do webservice:

    [webmethod]
    public string TesteRecebimento(string xml)
    {
       return "ok";
    }

    Cenários da simulação:

    Cenário 01: Até 6500 Threads enviando a cada 10 segundos (alternados), tudo funciona normalmente

    Cenário 02: Após 6500 Threads enviando a cada 10 segundos (alternados), começa a criar uma fila de envio e o webservice vai ficando cada vez mais lento

    Cenário 03: Abrir QUATRO instâncias do simulador e cada um deles coloquei 5000 Threads enviando a cada 10 segundos (alternados) (totalizando 20000 threads) e funcionou normalmente.

    Cenário 04: Alterei o simulador para criar AppDomains diferentes para cada um criar suas Threads. (coloquei cada appdomain com 5000 threads) e NÃO funcionou, o limite, independente da quantidade de Domínios ainda era 6500 threads, depois disso começava a ficar lento


    Finalmente a pergunta: Como eu faço para a minha aplicação enviar mais de 6500, ou seja, os 20000 como no cenário 03, sem que o webservice fique cada vez mais lento?

    quinta-feira, 26 de julho de 2012 12:26

Todas as Respostas

  • Fazer com que o webservice não fique lento será impossível, pois você está enviando muitas requisições, provocando uma sobrecarga no servidor web onde o serviço está hospedado. Mas existe uma solução: quando você adiciona uma referência do tipo service reference para um webservice, no config da sua aplicação (App.config ou Web.config) são adicionadas as sessões de bindings e endpoints. Cada endpoint possui um binding correspondente. Na sessão binding correspondente ao endpoint do seu serviço existe um atributo chamado sendTimeout. Aumente o valor desse atributo, assim você vai conseguir enviar mais requisições sem receber Timeout do servidor.


    terça-feira, 31 de julho de 2012 15:57
  • Daniel,

       Mas o problema é que se eu abrir mais de uma aplicação e cada uma delas tiver mais de 5000 threads enviando dados para o webservice, funciona normalmente. A bronca é quando apenas uma unica aplicação envia envia mais de 6500 thread.

    Ou seja, a bronca não é no webservice e sim em quem está enviando para este (eu acho)

    Flavio

    segunda-feira, 13 de agosto de 2012 20:22