2011-01-24 129 views
5

我已經繼承了一個嚴重連接對象泄漏的.net/web服務項目。奇怪的是,它一直在生產相當長的一段時間,直到最近纔出現問題。我想垃圾收集器通常會很快地清理它們。一個客戶站點上的一個Web服務器在重負載時已經開始耗盡連接。ADO.Net已達到連接池最大池大小

很明顯,解決方案是修復所有連接泄漏,但這不會很快發生。我甚至無法更改連接字符串中的最大池設置,連接字符串由應用程序動態構建。這需要更改代碼,這需要經歷一個不快的過程。

有什麼我可以做的服務器來緩解這一點,直到代碼更改可以發生?

爲什麼這只是一個位置的問題?如果我知道這個問題的答案,我可能會找出臨時工作。

是否有可能實際的問題是完全不同的東西,它會導致連接池問題?例如,服務器上的負載均衡可能會出現問題,或者出現問題的Web服務器出現問題。

回答

3

如果您在IIS 6或更高版本(我認爲)託管這個,那麼您可以強制應用程序池定期回收。我必須使用遠程應用程序來完成此操作,該應用程序不會關閉與Oracle數據庫的連接;我們將這些對象放入他們自己的應用程序池中,然後將其設置爲每小時回收一次。這個工作了幾個月,而我們追蹤了這個問題併發布了一個修復程序。

+0

謝謝,我會給它一個鏡頭。 – dwidel 2011-01-25 14:25:50

5

quickfix可以增加連接字符串的池大小。添加此屬性最大Pool Size=1000所以你的字符串看起來像ie。此

Data Source=server;Initial Catalog=db;User ID=user; Password=pwd;Max Pool Size=1000 
0

確保在任務完成後關閉所有連接字符串。

+0

我認爲你的意思是「完成任務後關閉所有連接」。 – Germstorm 2015-01-21 13:10:47