2011-08-18 60 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