2013-03-06 61 views
3

我被要求查看已經放慢到停止點的服務器。服務器上運行着數百個經典ASP站點,並且在檢查了一些代碼後,我發現有很多ADODB.Recordset(加上其他)對象被打開,使用但從未銷燬(設置爲Nothing)的實例。我明白,可能還有其他問題,我還沒有發現...傳統ASP中的內存監視/泄漏/問題

最初的代碼開發人員拒絕承擔任何責任,因爲他們聲明,在網站初始部署後,他們多年來一直工作得很好。

不幸的是,當天沒有足夠的時間來檢查所有網站上的所有代碼。因此,是否有任何可用的應用程序可以監視內存使用情況,泄漏情況或任何可能有助於診斷造成服務器停機的因素?

原來的網站是對Win2003的,IIS6,但現在已經被轉移到Win2012,IIS8。現在新服務器上也出現了放緩現象,所以我相信它不是硬件故障。

任何建議,將不勝感激。請注意,我用ASP.NET標記這也爲我欣賞現在的使用.NET最經典的ASP開發,但可能能夠提出他們的經驗的東西......

+0

可以將應用程序池配置爲一旦遇到特定內存閾值就重新啓動。這至少會讓事情有點活潑,但它會不時重置你的網站。對於調試,看看IIS調試診斷http://support.microsoft.com/kb/919790 – 2013-03-07 15:44:59

回答

0

比去到每個文件和手動設置其他每個Recodset,Connection,Command等對象什麼也沒有,我不認爲你能做的事情很多。

我在幾年前有過類似的事情,而我唯一的解決方案就是上述。

對不起!

1

這能對所有打開的連接,使高負荷下的問題,但即使早在ASP經典有一些不錯的垃圾回收。當頁面完成處理時,剩餘的對象和連接會自動關閉。另請參閱:https://stackoverflow.com/a/1613337/25163

我過去曾使用原始的ASP Profiler來查找我仍然維護的ASP/VBScript網站中的特定瓶頸位置。我會查看具有有問題的加載時間的任何特定頁面的日誌,並首先針對這些頁面。

如果你不已經有一個程序,我用一對夫婦的項目SmarterStats免費版本。運行SmarterStats的服務器需要能夠運行ASP.NET網站。

沒有多一點調查,最容易出問題的地方,任何其他的建議是在黑暗中拍攝。特別是因爲真正的問題可能在數據庫的一端是可能的。剖析有問題的頁面可以幫助您找到答案。

+0

非常有用的答案,謝謝。此刻,我再次感到自己就像在黑暗中拍攝一樣。我有一個強大的編程背景,可以看到代碼問題。這只是試圖隔離性能最差的應用程序的第一個...! – EvilDr 2013-03-08 09:28:52

0

從我的經驗中銷燬記錄集(設置爲空)不會影響性能。你需要檢查的東西,如:

  • 數據庫連接打開,然後沒有關閉。
  • 使用應用程序變量(這些咀嚼一噸內存)。
  • 會話變量的過度使用(在某種程度上)。
  • 拉取不需要的數據或不使用SQL查詢進行分頁糾正。
  • 文件操作過多。