IIS: запрос на длительную эксплуатацию и проблемы с производительностью - PullRequest
1 голос
/ 18 августа 2011

просто интересно, есть ли у меня веб-страница, которая генерирует pdf, но генерация может занять некоторое время из-за длинного запроса sql и количества данных, которые нужно вставить и вставить перед созданием pdf.Если запрос еще не завершен, и пользователь, увидев, что ничего не произошло, нажимает кнопку снова, снова и снова.Что произойдет в моем веб-приложении и в базе данных?Будет ли ожидаться, когда предыдущий запрос будет завершен, прежде чем выдать другой?Принимает ли он несколько запросов за сеанс?Будет ли зависать мое веб-приложение?Будет ли моя база данных выполнять несколько SQL-запросов одновременно от одного и того же пользователя?Мой sql сервер будет зависать?

Я знаю, что не должен оставлять это таким образом, сделать кнопку неактивной и добавить маленькое сообщение «Пожалуйста, подождите», но меня просто интересует, что произойдет в этой ситуации.

Извините за плохой английский!Спасибо!

1 Ответ

2 голосов
/ 18 августа 2011

Проверьте этот ответ: Проблема с IHttpAsyncHandler и счетчиком ASP.NET "Выполнение запросов" для технической точки зрения.

У вас было несколько вопросов:

Если запрос еще не завершен, а пользователь, увидев, что ничего не произошло, нажимает кнопку снова, снова и снова?

В этом случае несколько запросов будут поставлены в очередь на вашем веб-сервере, и все они будут обработаны. Это повлияет на производительность. Как вы упомянули, ваш пользовательский интерфейс должен предотвратить это, отключив кнопку и предоставив пользователю некоторую обратную связь о том, что запрос обрабатывается.

Что произойдет в моем веб-приложении и в базе данных? Будет ли ожидаться, когда предыдущий запрос будет завершен, прежде чем выдать другой?

Нет. Если вы не блокируете один ресурс в своей базе данных, каждый запрос будет обрабатываться отдельным работником в IIS. Существуют ограничения на количество одновременных запросов, но, как правило, все происходит параллельно. Если работа, которую вы выполняете, требует интенсивной загрузки ЦП, это может привести к конфликту ресурсов ЦП и снижению общей производительности. Вам определенно следует взглянуть на модель AsyncHandler.

Принимает ли он несколько запросов за сеанс?

Да

Будет ли зависать мое веб-приложение?

Замораживание может быть неправильным словом. Вполне возможно, что очередь для запросов увеличится, если запросы поступают со скоростью, превышающей скорость их выполнения веб-сервером. Если это произойдет, пользователям будет показано, что ваш веб-сервер не отвечает или работает медленно.

Будет ли моя база данных одновременно выполнять несколько SQL-запросов от одного и того же пользователя?

Может.

Мой sql-сервер зависнет?

То же, что и выше. Если ваш SQL Server не может обрабатывать запросы быстрее, чем они поступают, пользователям может показаться, что ваше приложение не отвечает.

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