2009-06-29 35 views
0

在過去的幾個月裏,我們的網站遇到了一個奇怪的問題。偶爾使用ADO.NET DataSets對數據庫進行各種查詢會引發一個錯誤......其中最常見的是「無法啓用約束,一行或多行包含違反非空值,唯一值或外部值鍵約束「。負載均衡環境中的ADO.NET DataSet有問題嗎?

數據實際上是有效的,因爲沒有改變任何東西,錯誤將是間歇性的。此外,它的「修復」是回收兩個Web服務器上的應用程序池......所以這個問題不會是錯誤的數據返回。一旦完成,它可以一次運行好幾個星期,或者在一天內休息3次。有沒有一致性...

它也似乎像更新的數據訪問方式,如Linq 2 SQL,工作得很好......雖然很難說,因爲該網站目前正在使用兩者。 (致力於將所有東西都交給L2S,但不幸的是,沒有太多時間來重寫舊組件)。

所以有人有過這樣的事情嗎?這是否與負載平衡有關?也許服務器有問題? (我已經強制所有連接到每個服務器,並經歷了他們倆的錯誤。)它可能是在虛擬機中運行有問題嗎?

錯誤...好的,所以總的問題是:是什麼原因造成的,我該如何解決?

哦,該網站是在.NET 3.5 ...

回答

0

基於關閉的你說什麼,我猜想,到負載所經歷的服務器上,在錯誤的時間,這是有關。

如果可以,請設置一個與您的生產服務器一樣負載平衡的臨時環境。然後開始加載測試應用程序。

此外,請確保您的生產服務器上應用了所有最新的Service Pack /更新。 MS傾向於不告訴我們他們正在修復的一切。最後,看看MS連接,看看修補程序是否能夠解決您正在討論的問題。

UPDATE:

負載測試可以是簡單或複雜,因爲你能負擔得起。它應該做的是通過一系列頁面,以可重複的方式在您的網站上執行標準操作。您通常希望模擬每個頁面加載/操作之間符合預期用戶行爲的「思考」時間。

然後,您執行測試作爲一定數量的simulataneous用戶。在測試執行期間,您需要記錄任何錯誤和服務器性能計數器,以瞭解應用程序的真實性能。

Some links to load testing tools are hereAnother list is here

作爲一個方面說明,我看到應用程序在僅有5個併發用戶的負載下開始展現出奇怪的行爲。這真的取決於網站的建立方式。

+0

如果這是一個負載問題,我會很驚訝...我不認爲我們會得到所有的流量。 – CodeRedick 2009-06-29 14:46:25