HttpWebRequest очень медленно! - PullRequest
68 голосов
/ 26 марта 2010

Я использую библиотеку с открытым исходным кодом для подключения к своему веб-серверу. Я был обеспокоен тем, что веб-сервер работал очень медленно, а затем я попытался провести простой тест на Ruby и получил эти результаты

Ruby-программа: 2.11 секунды для 10 HTTP GETs

Ruby-программа: 18,13 секунды для 100 HTTP GETs

C # библиотека: 20,81 секунды для 10 HTTP GETs

Библиотека C #: 36847,46 секунд для 100 HTTP GETs

Я профилировал и обнаружил, что проблема заключается в этой функции:

private HttpWebResponse GetRawResponse(HttpWebRequest request) {
  HttpWebResponse raw = null;
  try {
    raw = (HttpWebResponse)request.GetResponse(); //This line!
  }
  catch (WebException ex) {
    if (ex.Response is HttpWebResponse) {
      raw = ex.Response as HttpWebResponse;
    }
  }
  return raw;
}

Отмеченная строка занимает более 1 секунды, чтобы завершиться сама по себе, в то время как программа ruby, выполняющая 1 запрос, занимает 0,3 секунды. Я также делаю все эти тесты на 127.0.0.1, поэтому пропускная способность сети не является проблемой.

Что может быть причиной такого огромного замедления?

UPDATE

Проверьте измененные результаты тестов. Я на самом деле тестировал с 10 GET, а не 100, я обновил результаты.

Ответы [ 11 ]

0 голосов
/ 31 марта 2016

У нас была такая же проблема в веб-приложении. Мы ждали ответа 5 секунд. Когда мы меняем пользователя на applicationPool на IIS на networkService, ответ начинает поступать менее чем за 1 секунду

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...