2011-08-18 80 views
1

只是想知道 如果我有一个网页生成PDF,但可能需要一段时间才能生成由于长的SQL请求和数据的数量插入和生成pdf之前踩。 如果请求尚未完成,并且用户看到没有任何事情发生,再次点击按钮并一次又一次。 我的web应用程序和数据库中会发生什么? 在投掷另一个之前是否要等待先前的请求完成? 它是否接受每个会话的多个请求? 我的Web应用程序将冻结? 我的数据库是从同一个用户同时执行多个sql请求吗? 我的sql服务器将冻结?IIS长时间操作请求和性能问题

我知道我不应该这样做,并使按钮不可点击,并发出一条消息“请稍等”,但我只是在这种情况下会发生什么感兴趣。

对不起,英语不好! 谢谢!

回答

2

看看这个答案:Problem with IHttpAsyncHandler and ASP.NET "Requests Executing" counter的技术观点。

你有一些问题:

如果请求尚未完成,并且用户看见没有什么再次发生上点击按钮,再而三?

在这种情况下,多个请求将在您的Web服务器上排队,并且它们都将被处理。这会影响性能。正如你所提到的,你的用户界面应该通过禁用按钮并给用户一些反馈意见来阻止这个请求正在被处理。

在我的web应用程序和数据库中会发生什么?在投掷另一个之前是否会等待先前的请求完成?

不需要。除非您锁定数据库中的单个资源,否则每个请求将由IIS中的单独工作人员处理。并发请求的数量是有限制的,但通常会同时发生。如果您正在进行的工作是CPU密集型的,那么CPU资源可能会出现一些争用,并且整体性能会受到影响。你一定要看看AsyncHandler模​​型。

它会接受每个会话多个请求吗?

我的web应用程序将冻结?

冻结可能是错误的词。如果请求以比Web服务器更快的速度进入,请求队列可能会变大。如果发生这种情况,用户将看到您的Web服务器无响应或速度缓慢。

我的数据库将从同一用户同时执行多个sql请求吗?

可能。

我的sql服务器将冻结?

同上。如果您的SQL Server无法处理请求的速度比进入的速度更快,则您的用户可能会觉得您的应用程序无响应。

+0

tx很多答案! – user627283