В любом случае, чтобы имитировать ошибку занятости сервера 500.13 на iis 7?

Есть ли способ вернуть ошибку 500.13 из IIS? Мне нужно проверить пользовательскую страницу ошибки на ошибку 500.13.


person zer0w1dthspace    schedule 21.02.2013    source источник
comment
Вам нужно провести нагрузочное тестирование в Visual Studio.   -  person Raymund    schedule 26.02.2013


Ответы (5)


Вы не можете вызвать ошибку «сервер занят» из кода. Вы можете смоделировать коды ошибок, как показано в другом ответе, но это не позволит вам определить, будет ли ваша пользовательская страница ошибок отображаться правильно, поскольку весь смысл ошибки «сервер занят» заключается в том, что код не может быть выполнен - ​​так что это очень безопасное предположение, что IIS сделает что-то другое, чтобы вызвать такую ​​​​ошибку.

Но из того, что я вижу, ошибка 500.13 была вызвана приложениями ASP, а не ASP.NET. Вместо этого для приложений ASP.NET вы увидите ошибку 503 Service Unreachable.

Вы можете активировать код состояния 503 следующим образом:

  1. Откройте IIS Management Studio, перейдите в раздел «Пулы приложений», откройте «Дополнительные параметры» для своего пула приложений и измените длину очереди на 10 (минимум).
  2. В приложении ASP.NET добавьте вызов Thread.Sleep(50000).
  3. Теперь начните стучать по веб-серверу — довольно скоро вы получите ошибку 503 Service Unreachable.
person Knaģis    schedule 27.02.2013

Я не верю, что IIS включает в себя моделирование ошибок, однако существуют приложения для сравнительного анализа/нагрузочного тестирования, которые вы можете использовать. Единственным недостатком этого является то, что вам придется на самом деле подвергать свой (тестовый?) сервер реальной нагрузке до тех пор, пока IIS не "сломается".

Во-первых, следует уменьшить размер пула приложений IIS до минимально доступного.

IIS — длина очереди пула приложений

Я предлагаю вам использовать JMeter от Apache. Это относительно просто получить ручку и использовать.

После того, как вы загрузили и запустили его, вот основные шаги для проведения стресс-тестирования:

  1. Добавить "группу тем" – то, благодаря чему все это заработает JMeter - Добавить группу потоков

  2. Установить параметры группы потоковздесь вы устанавливаете количество одновременных потоков (т.е. пользователей) JMeter - Установка параметров группы потоков

  3. Добавить HTTP-запрос в группу потоков – это тестовый шаг. JMeter — добавить HTTP-запрос в группу потоков

  4. Установите параметры HTTP-запроса. здесь вы указываете веб-адрес (localhost, www.yourdomain.com и т. д.) вместе с любой другой необходимой вам конфигурацией JMeter — установка параметров HTTP-запроса

  5. Добавить отчеты. Отчеты — это то, как вы просматриваете результаты, а также запросы и ответы сервера JMeter - Добавить отчеты

  6. Запустите план тестирования и просмотрите результаты JMeter — запустите план тестирования и просмотрите результаты


Наконец, когда вы запустите тест и просмотрите ошибки, вы можете перейти на свой сервер в предпочитаемом вами браузере и просмотреть результаты в реальном времени.


ИЗМЕНИТЬ

Если у вас есть доступ к нескольким компьютерам/серверам, вы даже можете попробовать распределенное стресс-тестирование. Учебник доступен на их сайте.

person Jesse    schedule 27.02.2013
comment
спасибо за демонстрацию, но я провел стресс-тестирование, и оно дает мне 503 вместо 500,13. - person zer0w1dthspace; 02.03.2013
comment
Не за что, но я думаю, что часть ответа zforx стала поворотным моментом для IIS. - person Jesse; 02.03.2013

Поместите это в событие Page_Init:

protected void Page_Init(object sender, EventArgs e)
{
    Response.Clear();
    Response.StatusCode = 500;
    Response.SubStatusCode = 13;
    throw new Exception();
}

Но, насколько мне известно, невозможно установить ошибку субкода в разделе customErrors Web.config. Однако вы можете проверить подкод в событии Global.asx Application_Error:

int subCode = HttpContext.Current.Response.SubStatusCode;

Если следовать логике, можно смоделировать любую ошибку IIS.

person Marcus Vinicius    schedule 26.02.2013
comment
Насколько мне известно, проблема в том, что ошибка 500.13 будет отправлена ​​непосредственно в браузер без обработки IIS. - person Jesse; 26.02.2013
comment
Спасибо @Jesse, я обновил свой ответ. Для работы перенаправления должно произойти исключение. - person Marcus Vinicius; 27.02.2013

Вы можете использовать фреймворк для имитации нагрузки. Selenium Grid может помочь.

Visual Studio Team System также может имитировать нагрузку, однако это не бесплатно.
Взгляните на Нагрузочное тестирование с помощью Visual Studio Team System

person nunespascal    schedule 27.02.2013

Это аналогичный вопрос на StackOverflow. Соответствует ли это тому, чего вы пытаетесь достичь? Подделка кодов состояния Http в IIS/.net для тестирования

person Glenn Ferrie    schedule 28.02.2013